Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 清理用户提交的HTML,但保留安全的嵌入iFrame_Java_Javascript_Html_Security_Ckeditor - Fatal编程技术网

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));