addslashes(stripslashes($ field))保证sql注入无敌吗?

时间:2011-07-07 17:46:30

标签: php mysql sql database code-injection

减去整个addslashes()vs mysqli_real_escape_string()论证会剥离然后添加斜杠保证sql注入invulverability?这是否会改变数据,例如在从数据库中获取数据后显示带有双斜杠的字符串?

5 个答案:

答案 0 :(得分:1)

转义字符(addslashes()可能保护您免受SQL注入攻击。我不是如何消毒输入的专家,这就是原因:

我跳过整个“消毒”的事情,直接准备好了陈述。消除/转义意味着你必须在输出端做相反的操作,这意味着每次都要加倍努力,并且在某个地方搞乱的可能性增加一倍 - 允许错误的输入。如果你只是把{ {3}}在您执行的每个数据库查询和数据库本身之间,您的担忧已经结束。

当然,这并不是说PDO可以保护您免受CSRF或XSS等攻击,但实际存储的值是SQL注入安全的,您可以删除html或任何您需要做的事情在你存储之前,以防止这些攻击。

答案 1 :(得分:1)

所以你想做的是

$input='bla" SELECT * FROM blabla"';
$escaped=stripslashes(addslashes($input));

在那种情况下

$input==$escaped is true

所以没有这可能什么都不做 这就是为什么你应该更喜欢mysql_real_escape_string

答案 2 :(得分:1)

NO 使用:mysql_real_escape_string。

为什么:你没有考虑很多问题,主要是字符串编码等等......

答案 3 :(得分:0)

不,拥有适量的斜杠有助于解决一些漏洞,但您仍需要检查用户输入。无论如何都无法保证sql注入的无懈可击。

答案 4 :(得分:0)

在大多数情况下,

addslashes()会保护你。至于获取输出,取决于你提交它的方式,如果你这样做

$input = addslashes("Bob's shoes")
你会得到鲍勃的鞋子。

将其放入数据库时​​

insert into tbl (txt) values (Bob\'s shoes)

的输出
select txt from tbl
如你所愿,

将是Bob的鞋子,插入时sql会删除斜杠。

如果你的肛门有关它可以说添加其他预防措施,但如果你想要一个快速简单的东西,这不是一个非常安全的网站,它应该没问题。如果你查找它们还有内置的php清理功能