2013-07-08 124 views
-1

這種方式是否安全以將數據插入數據庫?避免MySQL注入和XSS

$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1")); 
+1

沒有。不是。您正在使用過時的數據庫庫。你也可以通過specialchars/stripslashes來摧毀你的數據。 –

+1

沒有「銀彈」。但可以說,防止SQL注入的最有效方法之一是使用預準備語句:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html – paulsm4

+0

可能的重複[如何防止SQL注入在PHP?](http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) –

回答

2

沒有「銀彈」。

但可以說是防範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語句。仔細驗證您的輸入,並儘可能使用準備好的語句。

恕我直言......

+0

這個問題也針對XSS,我只是在從數據庫輸出時添加使用htmlspecialchars,而不是在插入數據庫時 –