繁体   English   中英

使用PHP安全输出HTML

[英]Output HTML safely using PHP

我使用stackoverflow查找解决问题的方法,因此不需要这么长时间就发布问题。 我在寻找一种输出HTML代码的方法,但是许多人回答HTMLPurifier是最好的解决方案。

我很难相信这是唯一的方法,就像PHP是否应该考虑如何从XSS攻击中清除输入,但仍然会输出数据?

实力,htmlspecialchars,strip_tags并不是最佳选择。

所以,问题是:什么是?

我想做的是从MYSQL安全地输出用户的HTML数据。

htmlentities在许多情况下都可以正常工作。 但是,我认为防止XSS之类的最佳方法是将可接受的字符列入白名单。 例如:

一个人的名字可以有大写和小写字母,空格,连字符和可能的撇号。 因此,输入到系统中的全名必须与正则表达式/^[a-z'- ]+$/i匹配。
例如:亨利·史密斯,约翰·奥尼尔,希瑟·菲舍尔·加登纳。

电子邮件可以包含大写和小写AZ字符,数字,加号,破折号,句点和at符号。 因此,电子邮件的正则表达式为:/[ /[a-z0-9-.+]@[a-z0-9-.]+/i .+] /[a-z0-9-.+]@[a-z0-9-.]+/i .]+/ /[a-z0-9-.+]@[a-z0-9-.]+/i
例如: jeff.Atwood @ stackoverflow.com,spammer123 @ yahoo.com,leet + hacker @ gmail.com,php-list @ php.net

您可以扩展它以适合任何数据输入。 只需考虑可以键入哪些字符。 关于该系统最好的部分是,您可以允许与正则表达式匹配的输入,并记录不匹配的输入。 您可以查看被阻止的输入的日志,并查看是否需要调整正则表达式以允许有效字符或阻止试图规避安全措施的用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM