這種方式是否安全以將數據插入數據庫?避免MySQL注入和XSS
$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1"));
這種方式是否安全以將數據插入數據庫?避免MySQL注入和XSS
$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1"));
沒有「銀彈」。
但可以說是防範SQL注入的最有效的方法之一是使用準備好的語句:
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
另一個同樣有效的防禦是使用最現代化的,安全的MySQL的API:要麼mysqli的(面向對象)或PDO SQL:
http://php.net/manual/en/mysqlinfo.api.choosing.php
這裏是一個很好的鏈接鏈接關於SQL注入,以及如何減輕您的MYS風險QL代碼:
http://php.net/manual/en/security.database.sql-injection.php
兩項指引我會強烈建議您遵循:
1)你應該不使用舊的,過時的MySQL API的任何新的代碼。改用MySQLi或PDO。
2)您應該不是允許原始用戶輸入任何地方靠近SQL語句。仔細驗證您的輸入,並儘可能使用準備好的語句。
恕我直言......
這個問題也針對XSS,我只是在從數據庫輸出時添加使用htmlspecialchars,而不是在插入數據庫時 –
沒有。不是。您正在使用過時的數據庫庫。你也可以通過specialchars/stripslashes來摧毀你的數據。 –
沒有「銀彈」。但可以說,防止SQL注入的最有效方法之一是使用預準備語句:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html – paulsm4
可能的重複[如何防止SQL注入在PHP?](http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) –