2011-06-15 39 views
1

我想让我的用户输入HTML。ColdFusion中的白名单HTML有哪些选项?

要求

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

现有选项

  1. AntiSamy。不幸的是AntiSamy特殊字符编码和休息要求2
  2. 本地的ColdFusion功能(HTMLCodeFormat()等),因为他们的HTML编码成实体不工作,因此不能要求1
  3. 我发现这组函数某处,但我无法说出这是多么安全:http://pastie.org/2072867

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

+0

什么不符合AntiSamy并找出如何转换HTML实体?看到这个问题的答案,使用Apache Commons库对Java进行此操作:http://stackoverflow.com/questions/994331/java-how-to-decode-html-character-entities-in-java-like-httputility-htmldecode – orangepips 2011-06-15 15:57:38

+1

@orangepips,因为我在这里读到这可能是不安全的:http://stackoverflow.com/questions/3246739/how-to-not-transform-special-characters-to-html-entities-with-owasp-antisamy/4052924#4052924 - 不知道这是真的! – Mohamad 2011-06-15 16:09:24

+0

@穆罕默德,有趣。认为你可以转过头来使用'HTMLEditFormat(cleanUpString)'来转义在这个问题中引用的例子。 – orangepips 2011-06-15 16:15:12

回答

2

Portcullis适用于Cold Fusion的攻击特定问题。我使用了一段时间以来在网络上发现的其他正则表达式解决方案,这些解决方案运行良好,尽管它们几乎没有变得充实。在15年(10年作为一个CMS开发人员)我所建的任何东西都被砍死......敲木头。

在开发任何类型的输入字段时,最好从不同的角度来看问题。你已经有了UI方面,其中包括可用性和客户端验证。是的,它可以被绕过,但基于JavaScript的验证比后端中断方法更快速,响应速度更快,并且在神奇的UI规模上更高,或者只是在没有警告的情况下“消失”。它会加快后端验证,因为它进行了初步筛选。所以,这不是一个“而不是”,而是一个“不可忽视”的解决方案。

同样在用户界面上,为用户提供高质量的编辑器也可以在此过程中发挥巨大作用。我个人最喜欢的是CKeditor,因为它是唯一能够在前端处理Microsoft Word代码的产品,使它远离我的数据库。它似乎很愚蠢,但Word HTML是有效的,所以它不会引发任何红色标志....但是在适当大小的文档上它会很快超载DB字段插入max,相信与否。一个好的编辑器不仅能减少进入的愚蠢的HTML数量,而且还能让用户的事情变得更快......胜利/胜利。

我个人编码和解码我的角色......它总是工作得很好,所以我从来没有改变过实践。