为了防止xss攻击,如果我使用php正则表达式来阻止'>
或;
之类的奇怪字符,我还需要使用htmlspecialchars
和htmlentities
吗? / p>
答案 0 :(得分:2)
htmlspecialchars()
或htmlentities()
作为手工制作正则表达式的XSS攻击防护。 但,您必须考虑上下文。例如,htmlspecialchars()
将保护<div>
标记内的动态内容,但不保护<script>
标记内的动态内容或onclick
之类的事件处理程序。在html注释中,编码不提供任何保护。编写不易受XSS攻击攻击的代码的关键是理解所有不同的攻击向量。
有关XSS预防的完整详细信息,我建议使用OWASP XSS cheatsheet。
答案 1 :(得分:0)
尝试也使用:
答案 2 :(得分:-1)
PDO可以非常有效地保护您的查询免受XSS攻击。无需担心您是否记得保护您的查询,因为它是自动的。其他几个框架也支持此功能。
如果我因为客户端要求等而不使用PDO,我至少会在我的连接类中构建一个自动htmlspecialchars函数,这样我就不会忘记这样做(尽管这是我最不喜欢的选项) )
作为一名UI用户,我总是首先从--front-- end开始攻击我的安全问题。正确且精心设计的前端验证可以阻止无意识的问题甚至首先进入查询,并且它们是向用户报告问题的最有效的UI模式。阻止<
或;
等元素在大多数字段中都有意义,因为它们不合适。但是,你不能单独依赖前端,因为一个人可以通过关闭javascript来绕过它。但是,这是一个很好的第一步,也是限制流量很大网站上不正确查询的好方法。我对选择快速有效的字段前端验证的验证是here.