2013-07-08 35 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,而不是在插入数据库时 –