1

我想让我的用户输入 HTML。

要求

  1. 允许一组特定的 HTML 标记。
  2. 保留字符(例如,不要编码ãã

现有选项

  1. 反萨米。不幸的是,AntiSamy 对特殊字符进行编码并打破了要求 2。
  2. 本机 ColdFusion 函数(HTMLCodeFormat()等...)在将 HTML 编码为实体时不起作用,因此无法满足要求 1。
  3. 我在某处找到了这组函数,但我无法判断这有多安全:http: //pastie.org/2072867

那么我的选择是什么?是否有现有的图书馆?

4

1 回答 1

2

Portcullis适用于 Cold Fusion 以解决特定于攻击的问题。随着时间的推移,我使用了一些我在网上找到的其他正则表达式解决方案,这些解决方案效果很好,尽管它们还没有那么充实。在 15 年(作为 CMS 开发人员的 10 年)中,我构建的任何东西都没有被黑客入侵……敲木头。

在开发任何类型的输入字段时,最好从不同的角度看待问题。您已经获得了 UI 端,其中包括可用性和客户端验证。是的,它可以被绕过,但是基于 javascript 的验证比后端中断方法更快、响应更快,并且在神奇的 UI 规模上的速率更高,或者只是让事情在没有警告的情况下“消失”。它将加快后端验证,因为它会进行初始筛选。因此,它不是“替代”,而是“附加”类型的解决方案,不容忽视。

同样在 UI 方面,为您的用户提供高质量的编辑器也可以在此过程中产生巨大的影响。我个人最喜欢的是 CKeditor,因为它是唯一一个可以在前端处理 Microsoft Word 代码的软件,远离我的数据库。看起来很傻,但 Word HTML 是有效的,所以它不会引发任何危险信号……但在中等大小的文档上,它会很快使 DB 字段插入最大值超载,信不信由你。一个好的编辑器不仅会减少愚蠢的 HTML 的数量,而且它也会让用户的事情变得更快......赢/赢。

我个人对我的角色进行编码和解码......它总是运作良好,所以我从未改变过练习。

于 2011-06-20T21:43:16.133 回答