WYSIWYG编辑器安全问题(防止恶意输入)

时间:2010-06-15 18:39:45

标签: php javascript codeigniter wysiwyg jwysiwyg

我正在使用jWYSIWYG创建一个发布到数据库的表单,并想知道如何阻止恶意用户尝试在框架中注入代码?

为了显示样式,编辑器是否需要括号(我通常会在后期处理中删除)?

3 个答案:

答案 0 :(得分:2)

如果编辑器允许任意HTML,那么你正在打一场失败的战斗,因为用户可以简单地使用编辑器制作他们的恶意内容。

如果编辑器只允许标记的子集,那么它应该使用替代语法(类似于stackoverflow的方式),或者除了特定的白名单标记外,你应该转义所有HTML。

请注意,不能正确执行此操作非常容易,因此我会使用经过适当安全性测试的第三方解决方案。

答案 1 :(得分:2)

最终,当您将其插入数据库时​​,输出就在您自己手中,这时您需要确保剥离任何恶意内容。最简单的方法是使用htmlentites来对付此类数据,但是,还有其他方法可以绕过这些数据。这是一个很好的脚本,也由流行的Kohana php框架为其input类实现,以防止可能的XSS攻击:

http://svn.bitflux.ch/repos/public/popoon/trunk/classes/externalinput.php

答案 2 :(得分:1)

我遇到过类似的情况,我已经开始在我的PHP后端使用HTMLPurifier,这将阻止我能想到的每个攻击向量。它易于安装,并允许您将元素和属性列入白名单。它还可以防止在使用htmlentities时仍然存在的XSS攻击。