【发布时间】:2015-04-30 13:28:52
【问题描述】:
我有一个接受自定义 CSS 字段的 Java API。我需要在将 CSS 存储到我的数据库之前对其进行清理,并希望为此使用 Google Caja。
首先,我尝试使用Rhino JavaScript engine 运行Google Caja HTML/CSS sanitizer JavaScript 库。不幸的是,这不起作用,因为该库严重依赖于 DOM 的存在(特别是 window 对象)。
接下来,我从Maven repository 导入了Caja 项目。我查看了一些测试,但找不到如何使用消毒剂的示例。
我可以试试bringing the browser to the server,但这似乎有点过分了。
有没有人能够使用 Caja 来清理 Java 中的 CSS 字符串?
提前致谢!
【问题讨论】:
-
Caja 通过在运行时拦截程序动作来工作,而不是通过重写。你的确切问题是什么?您想防止 XSS,还是想防止 CSS 改变您网站的样式? css 是用作属性还是在
<style>元素中?参考:code.google.com/p/google-caja/wiki/JsHtmlSanitizer -
我的意图是将用户定义的 CSS 作为字符串存储在数据库中,然后将该 CSS 字符串包装在另一个站点上的
<style>标记中。我不打算使用大部分 Caja 库。只有 HTML/CSS 消毒剂。这是一个 jsfiddle,它显示了在一个简单的客户端应用程序上运行的消毒剂;我想在我的 Java API 中执行相同类型的清理。 jsfiddle.net/sscovil/e4pzdLuf
标签: java javascript css sanitization google-caja