mysql_real_escape_string() 和 mysql_escape_string() 足以確保應用程式安全嗎?
雖然這些函數可以增強資料保護,但不足以全面保障Web 應用程式的所有安全性
SQL 注入
SQL 注入
SQL 注入
Mysql_escape_string() 仍然可能使您容易受到SQL 注入攻擊,特別是在查詢中使用可變資料時。
帶有「�ta%」等參數的LIKE 查詢可被利用來傳回所有記錄或洩漏敏感資訊,例如完整的信用卡號。
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中文網其他相關文章!