我有一个带有CKEditor(WYSIWIG)的textarea设置,允许用户输入带有一些标记选项的信息。但是,我需要阻止潜在的黑客利用此功能并输入恶意代码。
我可以使用允许标记数组删除我不想使用PHPs strip_tags()的标记:http://php.net/manual/en/function.strip-tags.php
然而,攻击者仍然可能只是将onload
或onclick
等添加到允许列表中的任何HTML标记上。
那么检查此类问题的最佳选择是什么?
我最初的想法是创建这些JavaScript函数的黑名单数组,然后查看它们是否在输入的数据中出现。
听起来这是一种很好的方法,还是有更好的选择?
答案 0 :(得分:2)
使用更强大的工具,例如http://htmlpurifier.org/
它允许您清理输入,添加允许的属性,标记。你将有更多的控制权。
我强烈建议您创建白名单,而不是黑名单。使用黑名单,您可以跳过一些危险的属性,而使用白名单,您可以获得所需的内容。