我一直在重写我的(相当简单的)网站,使用 Yesod 作为熟悉框架的一种方式。其中一部分涉及提供一些简单的静态(但格式化)内容。为此,我决定使用 Yesod 书中描述的 nicHtml 字段:
http://www.yesodweb.com/book/forms
它允许简单的格式化,正如书中所说,“感谢 xss-sanitize 包,所有用户输入都经过验证并确保没有 XSS 攻击。”
然而,一切都不是很好。某些格式在您将其输入该字段时似乎有效,但在输入和提交之间的某处被清除。特别是,表单使用嵌入在“样式”属性中的 css 来执行诸如中心文本之类的操作,而正是这些基于 css 的格式化元素似乎被淘汰了。
我使用 print 语句来检查是否不是我的代码弄乱了它。由于它似乎不是,我假设 xss-sanitize 不喜欢任何嵌入式 css 并将其删除。修改 Yesod.Form.Nic 以删除对 sanitizeBalance 的调用似乎可以解决问题,因此这似乎是原因。
现在,我可以就这样离开它,因为编辑这些静态页面无论如何都需要成为受信任的用户(即目前的我),所以我不太关心验证是否肮脏。但感觉就像是一个黑客,所以我的问题是 - 有没有其他方法可以解决这个问题?或者是否有另一个我不知道的包为 Yesod 提供了一个完整的 HTML 编辑器字段?