我相信仅允许a-z和A-Z范围内的字符会消除xss攻击的可能性?我已经读了很多关于仅通过htmlspecialchars()
放置所有输出的内容,但是似乎在某些情况下,这不足以提供完整的保护。
另外,如果[a-zA-Z]+
完全安全,有什么方法可以完全安全地接受'
和-
字符,从而避免发生xss攻击的可能? (因为这是在a-z之外的名称中找到的两个主要字符)
最佳答案
这个问题有两个方面。
首先,是的,是的,当然,如果没有办法“脱离上下文”,那么您将消除XSS和SQL注入(inject)漏洞的所有可能性。如果只能使用字母字符,则无法插入JS或SQL。
第二:这当然不是真正的保护措施,就像永远不会再开车一样,这是不发生事故的故障保护方法。某天或另一天,您将在网站上输入表单,要求输入其他字符,并且您将被搞砸。只是写代码从根本上来说是安全的,永远不要相信客户端输入,并且正确地转义代码生成的所有HTML才是唯一安全的方法。
您要尝试的是解决输入端的输出问题,但这根本行不通。如果您有任意的用户输入,最终将有人尝试滥用它来做讨厌的事情。了解如何在输出端正确地对其进行转义,使用Twig之类的模板系统来处理固有的大多数XSS问题,并使用Doctrine之类的DAL / ORM或MySQLi或PDO之类的参数化数据库访问API避免SQL注入(inject)。
关于php - [a-zA-Z] +会消除xss攻击的可能性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19260365/