【发布时间】:2014-08-16 17:07:26
【问题描述】:
我需要清理用户输入的恶意 html 并由CKEditor 提交。我目前使用owasp-java-html-sanitizer。为此目的,但它也删除了嵌入的 iframe。但我有真正的用例,例如在帖子中嵌入 YouTube 视频或幻灯片分享演示文稿。
如何安全地允许此类嵌入式 iframe?我使用 Java。
【问题讨论】:
标签: java javascript html security ckeditor
我需要清理用户输入的恶意 html 并由CKEditor 提交。我目前使用owasp-java-html-sanitizer。为此目的,但它也删除了嵌入的 iframe。但我有真正的用例,例如在帖子中嵌入 YouTube 视频或幻灯片分享演示文稿。
如何安全地允许此类嵌入式 iframe?我使用 Java。
【问题讨论】:
标签: java javascript html security ckeditor
您需要在您的 Html 策略中允许 iframe 元素和源属性。 您可以像下面从java doc修改的示例一样进行操作
// Define the policy.
Function<HtmlStreamEventReceiver, HtmlSanitizer.Policy> policy
= new HtmlPolicyBuilder()
.allowElements("a", "p", "iframe")
.allowAttributes("href").onElements("a")
.allowAttributes("source").onElements("iframe")
.toFactory();
// Sanitize your output.
HtmlSanitizer.sanitize(myHtml, policy.apply(myHtmlStreamRenderer));
【讨论】:
<div class="embeddedContent" data-resizetype="noresize" data-align="none" data-oembed="http://www.youtube.com/watch?v=fC5N2EPCesk"><iframe src="//www.youtube.com/embed/fC5N2EPCesk?wmode=transparent&amp;jqoemcache=paWu1" width="425" height="349" allowfullscreen="true" allowscriptaccess="always" scrolling="no" frameborder="0"></iframe></div> & 在经过净化的输出中,我将所有属性都删除了。如何防止属性被剥离?顺便说一句,允许具有所有这些属性的 iframe 是否安全?
<div><iframe></iframe></div> 这是没有用的......谢谢!
.allowAttributes(...).onElements("iframe") 调用中添加您想要保留的任何属性。例如,.allowAttributes("src", "wmode", "jqoemcache", "width", "height","allowfullscreen", "allowscriptaccess", "scrolling","frameborder").onElements("iframe")。 (注意它是“src”,而不是“source”。)话虽如此,让你的 iframe 做所有这些事情可能是不安全的......