首頁 > 後端開發 > php教程 > mysql_real_escape_string() 仍然是針對 SQL 注入的可靠保護嗎?

mysql_real_escape_string() 仍然是針對 SQL 注入的可靠保護嗎?

Susan Sarandon
發布: 2024-11-11 16:31:03
原創
681 人瀏覽過

Is mysql_real_escape_string() Still a Reliable Protection Against SQL Injection?

評估mysql_real_escape_string() 的完整性

人們對mysql_real_escape_string() 在保護資料庫中免受查詢免受攻擊方面的可靠性提出了擔憂。批評者參考了舊文章,指出該函數在提供足夠保護的能力方面存在潛在缺陷。

MySQL 文件

mysql_real_escape_string() 的MySQL C API 文件承認了這一問題:

If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.
登入後複製

在PHP中,mysql_set_charset() 的功能與 MySQL 的 mysql_set_character_set() 類似,並且作為 PHP 的對應部分。

Proofcode

<?php
$str = "'mystring'";

// Set encoding
mysql_set_charset('utf8');

// Escape string with correct encoding
$escaped_str = mysql_real_escape_string($str);
登入後複製
透過在使用 mysql_real_escape_string() 之前利用 mysql_set_charset() 修改編碼,可以確保字元集設定正確且函數按預期運行。這解決了對潛在漏洞的擔憂,並允許 mysql_real_escape_string() 有效防止 SQL 注入攻擊。

以上是mysql_real_escape_string() 仍然是針對 SQL 注入的可靠保護嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板