还有另一种方法来修复Yesod的nicHtmlField吗?

时间:2011-08-03 15:49:23

标签: haskell yesod

我一直在使用Yesod重写我的(相当简单的)网站,以此来熟悉框架。其中一部分涉及提供一些简单的静态(但格式化)内容。为此,我决定使用Yesod书中描述的nicHtml字段:

http://www.yesodweb.com/book/forms

它允许简单的格式化,正如书中所说,“由于xss-sanitize包,所有用户输入都经过验证,并确保不会受到XSS攻击。”

然而,一切都不顺利。当您将其输入字段时,某些格式似乎有效,但在输入和提交之间的某处会被删除。特别是,表单使用嵌入在“样式”属性中的css来执行中心文本之类的操作,而这些基于CSS的格式化元素似乎已被删除。

我使用print语句检查是不是我的代码在某种程度上弄乱了它。因为它似乎不是,我假设xss-sanitize不喜欢任何嵌入式css并删除它。修改Yesod.Form.Nic以删除对sanitizeBalance的调用似乎可以解决问题,因此这似乎是原因。

现在,我可以这样离开,因为编辑这些静态页面无论如何都需要成为一个受信任的用户(即我现在),所以我不太关心验证恶意。但它感觉就像它是什么,一个黑客,所以我的问题是 - 还有其他方法吗?或者是否有另一个我不知道的包为Yesod提供了一个非破坏的HTML编辑器字段?

2 个答案:

答案 0 :(得分:1)

我们实际上正在寻找其他可能的富文本编辑器,以便在Yesod网站上使用,因此我们最常使用的是最终形式的模块。最近,格雷格指出Aloha editor乍一看看起来很酷。

答案 1 :(得分:1)

您是否会在Yesod问题跟踪器上提交错误?我想无论我们使用哪种编辑器,我们都必须通过编辑器允许基本的CSS。在您的受信任用户的情况下,您现在可以找到NicEdit字段类型并创建一个根本不会被过滤的类似类型。也许我们应该创造这样一个领域。