如何限制用户可以输入到文本框中的HTML类型?我正在使用一些我正在测试的自定义软件运行一个小论坛,但我需要知道如何限制HTML输入。有什么建议吗?
答案 0 :(得分:2)
您没有说明论坛的构建内容,但如果是PHP,请查看:
库功能:白名单,删除,格式良好,嵌套,属性,XSS安全,标准安全
答案 1 :(得分:2)
我建议采用稍微替代的方法:
保持用户数据清洁,可以更灵活地显示用户数据。过滤所有传出数据是一个很好的习惯(沿着永不信任的数据模因)。
答案 2 :(得分:0)
提交文本后,您可以使用PHP中的正则表达式删除与预定义集不匹配的任何/所有标记。
它看起来像下面这样:
find open tag (<)
if contents != allowed tag, remove tag (from <..>)
答案 3 :(得分:0)
解析输入提供并删除所有与您允许的列表不完全匹配的html标记。这可以是复杂的正则表达式,也可以通过输入字符串的char []进行有状态迭代,构建允许的输入字符串并在img
等标记上剥离不需要的属性。
使用其他代码系统(BBCode,Markdown)
在线查找已经执行此操作的代码,以作为实施的基础。例如,Slashcode必须执行此操作,因此在Perl中查找它的实现并使用正则表达式(我假设在那里)
答案 4 :(得分:0)
无论您使用什么,请务必了解哪种HTML内容可能存在危险。
e.g。 a&lt;脚本&gt;标签很明显,但是&lt;风格&gt;标签在IE中同样糟糕,因为它可以调用JScript命令。
实际上,任何style =“...”属性都可以在IE中调用脚本。
&LT;对象&gt;将是另一个厌倦的标签。
答案 5 :(得分:0)
PHP附带了一个简单的函数strip_tag来删除HTML标记。它允许某些标签不被剥离。
示例#1 strip_tags()示例
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>
以上示例将输出:
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
就个人论坛而言,我会使用BBCode或Markdown,因为提供的支持和功能数量如实时预览。