首頁 > 資料庫 > mysql教程 > `mysql_real_escape_string()` 真的有缺陷,還是只是被誤解了?

`mysql_real_escape_string()` 真的有缺陷,還是只是被誤解了?

Mary-Kate Olsen
發布: 2024-12-04 07:15:17
原創
171 人瀏覽過

Is `mysql_real_escape_string()` Really Flawed, or Just Misunderstood?

mysql_real_escape_string() 是否有致命缺陷?

儘管聲稱其不可靠,但 mysql_real_escape_string() 仍然是創建您自己的準備好的語句的寶貴工具。下面詳細介紹了它的功能以及如何有效地使用它。

mysql_real_escape_string() 解釋

MySQL C API 文件指出:「如果您需要更改字元設定連接,您應該使用 NAMESsql_set_character_set() 函數而不是執行SET NAMESsql(或SET CHARACTER SET)語句。 PHP 的 mysql_set_charset() 鏡像 MySQL 的 mysql_set_character_set()。

證明程式碼

在此範例中,mysql_set_charset() 確保連線使用 utf8mb4 字元集。這允許 mysql_real_escape_string() 正確處理可能容易受到 SQL 注入攻擊的字元。
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// Set the character set using mysql_set_charset()
$mysqli->set_charset("utf8mb4");

// Prepared statement using mysql_real_escape_string()
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param('s', mysql_real_escape_string($_GET['username']));
$stmt->execute();
?>
登入後複製

結論

雖然了解mysql_real_escape_string() 的限制很重要,但使用它與mysql_set_charset() 結合使用可以讓您有效地創建自己的準備好的語句。透過這些步驟,您可以降低 SQL 注入的風險並維護應用程式的安全性。

以上是`mysql_real_escape_string()` 真的有缺陷,還是只是被誤解了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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