我使用stackoverflow找到问题的解决方案,所以我不需要发布这么长的问题。我搜索输出HTML代码的方法,但是你们很多人回答HTMLPurifier是最好的解决方案。
我发现很难相信这是唯一的方法,比如不认为PHP会考虑如何清除XSS攻击的输入但仍然输出数据?
Htmlentities,htmlspecialchars,strip_tags不是最好的选择。
所以,问题是:什么是?
我要做的是安全地从MYSQL输出用户的HTML数据。
答案 0 :(得分:0)
htmlentities工作得很好。但是,我认为防止像XSS这样的事情的最佳方法是将可接受的字符列入白名单。例如:
一个人的名字可以包含大写和小写字母,空格,连字符和可能的撇号。因此,输入系统的全名必须与正则表达式/^[a-z'- ]+$/i
匹配
示例: Henry Smith,John O'Neil,Heather Fischer-Gardener。
电子邮件可以包含字符大写和小写字母A-Z,数字,加号,短划线,句点和at符号。因此,电子邮件的正则表达式为:/[a-z0-9-.+]@[a-z0-9-.]+/i
示例: jeff.Atwood@stackoverflow.com,spammer123 @ yahoo.com,leet + hacker @ gmail.com,php-list @ php.net
您可以展开它以适应任何数据输入。想想可以打字的字符。关于这个系统的最好的部分是,你可以允许输入匹配正则表达式和记录输入,而不是。您可以查看被阻止输入的日志,看看是否需要调整正则表达式以允许有效字符或阻止用户试图规避您的安全措施。