Java 清理用户提交的HTML,但保留安全的嵌入iFrame
我需要清理由Java 清理用户提交的HTML,但保留安全的嵌入iFrame,java,javascript,html,security,ckeditor,Java,Javascript,Html,Security,Ckeditor,我需要清理由CKEditor提交的恶意html的用户输入。我目前使用的是owasp java html消毒液。为此,它也删除了嵌入的iframe。但我有一些真正的用例,比如在帖子中嵌入YouTube视频或幻灯片共享演示 我怎样才能安全地允许这种嵌入式iFrame?我使用Java。您需要允许您的Html策略使用iframe元素和source属性。 您可以按照从 //定义策略。 功能策略 =新的HtmlPolicyBuilder() .Allowlements(“a”、“p”、“iframe”) .
CKEditor
提交的恶意html的用户输入。我目前使用的是owasp java html消毒液
。为此,它也删除了嵌入的iframe。但我有一些真正的用例,比如在帖子中嵌入YouTube视频或幻灯片共享演示
我怎样才能安全地允许这种嵌入式iFrame?我使用Java。您需要允许您的Html策略使用iframe元素和source属性。 您可以按照从
//定义策略。
功能策略
=新的HtmlPolicyBuilder()
.Allowlements(“a”、“p”、“iframe”)
.allowAttributes(“href”).OneElements(“a”)
.allowAttributes(“来源”).OneElements(“iframe”)
.toFactory();
//清理输出。
清理(myHtml,policy.apply(myHtmlStreamRenderer));
非常感谢!但是输入html是这样的:
&在经过消毒的输出中,我去掉了所有属性。如何防止属性被剥离?顺便说一句,允许具有所有这些属性的iframe这样做安全吗?我为上述输入得到的净化输出是:
,这是无用的。。谢谢@user01,这看起来很简单。只需在.allowAttributes(…).OneElements(“iframe”)
调用中添加您想要保留的任何属性。例如,.allowAttributes(“src”、“wmode”、“jqomemcache”、“width”、“height”、“allowfullscreen”、“allowscriptaccess”、“scrolling”、“frameborder”).OneElements(“iframe”)
。(请注意,这是“src”,而不是“source”。)话虽如此,允许您的iframe做所有这些事情可能并不安全。。。
// 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));