减去整个addslashes()vs mysqli_real_escape_string()论证会剥离然后添加斜杠保证sql注入invulverability?这是否会改变数据,例如在从数据库中获取数据后显示带有双斜杠的字符串?
答案 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清理功能