mysql_real_escape_string() 和 mysql_escape_string() 對於應用程式來說夠安全嗎?
簡介:
維護應用安全至關重要,資料庫安全發揮重要作用。雖然 mysql_real_escape_string() 和 mysql_escape_string() 通常用於防止 SQL 注入,但人們對其功效感到擔憂。
問題:
mysql_real_escape_string() 會嗎和 mysql_escape_string() 足以滿足應用程式的需要安全性?
答:
否。
mysql_real_escape_string() 和的漏洞mysql_escape_string()
由於存在多個安全漏洞,這些函數不足以實現全面的應用程式安全:
SQL 注入:
範例:
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
可以透過插入惡意資料來利用此查詢,從而可能導致未經授權的資料庫存取。
喜歡SQL攻擊:
範例:
$sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";
此查詢可讓攻擊者擷取所有記錄,構成安全性
字元集漏洞:
建議解決方案:已準備好語句
為了解決這些漏洞,建議的安全措施是使用準備好的語句。
範例:
$pdo = new PDO($dsn); $column = 'url'; $value = 'http://www.stackoverflow.com/'; $limit = 1; $statement = $pdo->prepare('SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ' . $limit); $statement->execute(array($value)); while (($data = $statement->fetch())) { }
結論:
mysql_real_escape_string() 和mysql_escape_string() 提供某些SQL 注入攻擊的保護有限。然而,它們不足以保護應用程式免受各種其他漏洞的影響。建議的方法是使用準備好的語句來確保全面的應用程式安全性。
以上是mysql_real_escape_string() 和 mysql_escape_string() 足以保證應用程式安全嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!