3

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

编辑器不需要括号(我通常会在后期处理中去掉)来显示样式吗?

4

3 回答 3

2

最终,当您将输出插入数据库时​​,输出将掌握在您自己手中,此时您需要确保删除任何恶意内容。最简单的方法可能是htmlentites针对此类数据使用,但是,坏人还有其他方法可以绕过它。这是一个很好的脚本,它也由流行的 Kohana php 框架实现,用于其input类以抵御可能的 XSS 攻击:

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

于 2010-06-15T18:53:53.040 回答
2

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

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

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

于 2010-06-15T18:44:01.763 回答
1

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

于 2010-06-16T03:40:27.893 回答