首頁 >資料庫 >mysql教程 >`mysql_real_escape_string()` 和 `mysql_escape_string()` 是否足以保護我的 Web 應用程式免受 SQL 注入?

`mysql_real_escape_string()` 和 `mysql_escape_string()` 是否足以保護我的 Web 應用程式免受 SQL 注入?

Susan Sarandon
Susan Sarandon原創
2024-12-13 03:16:14776瀏覽

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure My Web Application Against SQL Injection?

mysql_real_escape_string() 和 mysql_escape_string() 足以確保應用程式安全嗎?

雖然這些函數可以增強資料保護,但不足以全面保障Web 應用程式的所有安全性

SQL 注入

  • SQL 注入

SQL 注入

  • SQL 注入

SQL 注入

  • SQL 注入

Mysql_escape_string() 仍然可能使您容易受到SQL 注入攻擊,特別是在查詢中使用可變資料時。

  • LIKE SQL攻擊

帶有「�ta%」等參數的LIKE 查詢可被利用來傳回所有記錄或洩漏敏感資訊,例如完整的信用卡號。

  • 字符集漏洞
Internet Explorer 仍然容易受到字符集的影響

LIMIT漏洞

// Escaping Method
$sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s",
               mysql_real_escape_string($argv[1]),
               mysql_real_escape_string($argv[2]),
               mysql_real_escape_string($argv[3]));

// Prepared Statement
$statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' .
                           'WHERE ' . $column . '=? ' .
                           'LIMIT ' . intval($limit));
$statement->execute(array($value));

Mysql_real_escape_string() 對於 LIMIT 漏洞攻擊無效,可以執行操縱 LIMIT 進行任意 SQL查詢主動防禦:準備好的語句不要只依賴轉義,考慮使用準備好的語句來防止意外的SQL 執行。 準備好的語句強制執行有效的伺服器端SQL 語法,降低已知和未知的風險程式碼範例以下是PHP 中mysql_escape_string()和準備好的語句的比較:準備好的語句,雖然實作時間稍長,但可以針對惡意 SQL 查詢提供卓越的保護並降低程式碼複雜性。

以上是`mysql_real_escape_string()` 和 `mysql_escape_string()` 是否足以保護我的 Web 應用程式免受 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn