这可能是this question here的可能副本,但它并没有真实地以我(愚蠢的头)可以理解的方式来回答和回答我的问题。
好的,我有previous question中看到的网页公式。在使用$ txtpost进行mysql查询注入之前,我现在添加了$ txtpost = htmlentities($txtpost, ENT_QUOTES);
,这可以保护我免受XSS攻击。但是,当用户指出php.net时,不会保护我免受javascript注入。那说,我怎么能阻止这样的javascript注入?正如您在上一个问题的代码中所看到的,我不知道究竟将在文本字段中输入什么,因此我不能只允许特定的值。请注意,上一个问题的所有代码都是错误的,现在已修复,此刻一切正常
VicStudio
答案 0 :(得分:2)
嗯,确实您不会受到保护,不会有人将HTML放入您的数据库。
首先
$txtpost = htmlentities($txtpost, ENT_QUOTES);
将转义引号,使SQL注入不太可能。但我仍然可以做OR 1 = 1
。这使得每个陈述都成立。现代技术依赖于准备好的陈述(How to replace MySQL functions with PDO?)
如果您阅读上述内容,您将看到准备好的声明的PDO示例。您也可以使用MySQLi执行此操作。它阻止了人们可以进行SQL注入的事实。
第二: 是的,我仍然可以使用
之类的东西<a href="javascript:alert(1)">XSS</a>
进入您的数据库。您应该使用健全性功能将您喜欢的元素定义到数据库中。 PHP为您提供了几个
结论是你需要掌控。您可以决定页面上的内容。因此,如果您想要安全,可以过滤所有内容并将其作为纯文本放在页面上。为安全起见,我建议消毒三次。在发布内容之前,将其传递到数据库之前,以及将其放到页面上时。这样可以最大限度地减少注射的危险。