使用汽车销售网站Autotrader,他们不输出HTML符号。相反,他们不允许使用符号,只需将符号转换为实体,然后输出即可。
出于某种原因,他们似乎觉得有必要解码实体以进行输出。
这引出了另一个关于我自己网站的问题。
我正在使用HTMLPurifier来安全地保存和输出用户输入。
这将转换所有符号并且<等等到他们的实体。
输出html实体的正确方法是什么,但在PHP中作为正确的符号?
我一直在使用html_entity_decode()。但是我已经想到,实际上这可能会改变角色并在那里再次允许XSS等攻击。
我如何PHP回显包含实体但正确且安全地显示符号的字符串?
答案 0 :(得分:2)
不解码,将带有实体的字符串直接发送到HTML输出。
用户的浏览器将正确显示HTML实体。从PHP输出时
echo "Hello kitty!<script>steal_her_password();</script>";
然后用户将正确看到
Hello kitty!<script>steal_her_password();</script>
但是如果你先解码这个字符串,那么用户只会看到
Hello kitty!
加上她的密码将被盗。