有一个论坛,发布HTML是被禁止的。 但是,有些用户希望有可能发布一些符号标志,十六进制html实体,例如:
💗
有关详细信息,请参阅:http://graphemica.com/%F0%9F%92%97。
我的问题是:
&
或»
等的成员,所以只是以&#开头的html-entities,后跟一个数字加上最后的分号。知道如何解决这个问题吗?
答案 0 :(得分:1)
另一个答案是使用jQueries .text方法将消息添加到论坛消息元素。 虽然您必须更改论坛创建消息结构的方式。
您可以安全地添加任何字符序列,浏览器不会将它们解释为HTML。
示例:
$('#message_text').text(naughty_msg_string);
答案 1 :(得分:0)
这样可以安全地使用这些符号(XSS等)吗?
不,这绝不安全。例如,&
只是&
的一个方便的别名,它仍然是一个放大器。同样地,<
是一个小于号的符号,因而是“天真地”。如果在处理过程中忘记了这一点,那么允许数字HTML实体仍可以打开XSS攻击面。
您可以考虑仅允许主ASCII表(128+)之外的数字符号,这样会更安全。
允许使用的最佳功能是什么?实际上,符号html实体显示为纯文本。
考虑到上述功能,preg_replace_callback
是一个很好的候选者,因为它允许您在允许之前测试内容。
这也回答了第三个问题,因为你可以在regexp中测试数字。