我正在开发一个基于php的Web应用程序,其中有一个文本区域,用户可以在其中键入他/她想要的内容,然后将内容存储在数据库中后显示在另一个页面上。方案是用户可以键入HTML标记。但就功能限制而言,我希望允许用户执行某些标记,例如<a>
,<div>
等,使其余标记显示为纯文本。
我之前曾粘贴过这个问题:
Prevent HTML data from being posted into form textboxes
但它只回答了诸如strip_tags()
和htmlspecialchars()
之类的方式,这些方式可以剥离html内容,完全显示剩余的明文,或者将所有内容显示为纯文本,而无需将任何标记添加为异常。请帮忙。欢呼声。
答案 0 :(得分:1)
您可以查看HTML Purifier。这是专门为此设计的图书馆。
它似乎可以处理任何形式的xss攻击。另请参阅comparison页面。
答案 1 :(得分:0)
正如上一篇文章中所述,strip_tags()就是答案,如果你不费要阅读strip_tags()的手册页,你会发现你可以告诉它允许哪些标签,这正是你想要的
答案 2 :(得分:0)
检查strip_tags
{{1}},您会看到接受的第二个(可选)参数是一个允许标记数组。
答案 3 :(得分:0)
编辑:误解了它。没关系D:需要更多的睡眠。看起来你应该运行一个htmlspecialchars并用正则表达式重新转换所需的标签
获取PHP的翻译表并删除你不想要的翻译表,然后调用strtr();
$table = get_html_translation_table(HTML_SPECIALCHARS);
$table['allowed_tag'] = "";
$table['another_allowed_tag'] = "";
strtr($str, $table);
我没有测试过,但应该可以使用。