PHP的HTML过滤库
我正在使用 HTMLPurifier 检查整个 HTML 文档中是否存在 XSS。问题是它似乎删除了 标签内以外的任何内容。但是,我想保留一切,只是我...
如何在 HTML Purifier 中删除 img 标签的 alt 属性?
默认情况下,HTML Purifier 会为每个 img 标签添加一个 alt 属性(确实很烦人的行为)。所以 变成 文档提及...
我的 HTMLPurifier 遇到问题,它似乎正在将 英镑 回到 英镑 我当前的配置是: $config = \HTMLPurifier_Config::createDefault(); $config->s...
这是我长期以来遇到的一个问题 - 我目前接受用户的完整 html 页面作为输入,并希望过滤/清理它。 HTMLpurifier 的问题是它删除了头部......
为什么用PHP净化html后表情符号和特殊字符无法正常显示?
所以我有一个博客,允许用户使用 TinyMCE 在一个位置编写内容。然后内容被清理、验证并存储在数据库中。它显示在不同的页面上。漂亮
使用 Html Purifier 从提交的 html 页面内容中提取样式块
如何使用html净化器提取这样的块样式。 我尝试使用下面的代码从 html 内容中提取样式。 但我不能; $config = \HTMLPurifier_Config::createDefault(); $
URI.SafeIframeRegexp 不允许使用 HTMLPurifier 播放 YouTube 视频
我正在尝试使用 HTMLPurifier 允许 YouTube 视频使用该代码: 需要一次__DIR__。 '/lib/HTMLPurifier/HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); $config -> ...
HTMLPurifier 允许块引用和带有 cite 的 ins 标签
我希望 HTMLPurifier 中允许使用以下标签。 例如: 我希望 HTMLPurifier 中允许使用以下标签。 例如: <ins cite="blog.html"></ins> <blockquote cite="https://www.google.com/"></blockquote> 谢谢你 您可以将其他标签和属性添加到允许的列表中。例如,要添加具有 blockquote 属性的 ins 和 cite 标签: $config = HTMLPurifier_Config::createDefault(); $def = $config->getHTMLDefinition(true); $def->addElement('blockquote', 'Block', 'Flow', 'Common', ['cite' => 'URI']); $def->addElement('ins', 'Inline', 'Flow', 'Common', ['cite' => 'URI']); $purifier = new HTMLPurifier($config); 现在,当您使用此 $purifier 实例来净化 HTML 时,除了默认允许的标签和属性之外,它将允许 blockquote 和 ins 标签的 cite 属性。 记住仔细自定义允许的元素和属性,以匹配您的特定用例和安全要求。始终验证和清理用户输入,以防止应用程序中的 XSS 攻击和其他安全漏洞。
我想配置 htmlpurifier,以便它允许 html 中的标签。 Htmlpurifier 与标签表、tbody 的白名单不起作用。 官网demo模式下,table标签也是
为什么带有 mews/purifier 的 YouTube 链接不支持元素“iframe”?
在带有 mews/purifier 的 laravel 8 应用程序中:3.4, 我需要显示 youtube 视频(使用 定义 <question vote="0"> <p>在带有 mews/purifier 的 laravel 8 应用程序中:3.4, 我需要显示 youtube 视频(使用 <iframe ...)</p> 定义 <p>当 youtube iframe 块被 \Purifier::clean( 方法我发现分支清除时 <a href="https://stackoverflow.com/questions/25649525/laravel-package-purifer-not-work-with-iframe">Laravel Package Purifer 不适用于 iframe</a></p> <p>并尝试修改我的 config/purifier.php 文件,例如:</p> <pre><code>'settings' => [ 'default' => [ 'HTML.Doctype' => 'HTML 4.01 Transitional', // I added this iframe rule 'HTML.Allowed' => 'iframe[src|width|height|class|frameborder],h1,h2,h3,div,blockquote,table,tbody,tr,td,figure,b,strong,i,em,u,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]', 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align', 'AutoFormat.AutoParagraph' => false, 'AutoFormat.RemoveEmpty' => true, ], 'test' => [ 'Attr.EnableID' => 'true', ], 'youtube' => [ "HTML.SafeIframe" => 'true', "Filter.YouTube" => 'true', // I suppose this rule means all iframes are allowed "URI.SafeIframeRegexp" => '%.+%', ], </code></pre> <p>但是我得到了错误:</p> <pre><code>Element 'iframe' is not supported (for information on implementing this, see the support forums) (View: /mnt/_work_sdb8/wwwroot/lar/HRBrazy/affiliate/resources/views/news/show.blade.php) </code></pre> <p>如何解决?</p> </question> <answer tick="false" vote="1"> <p>该配置看起来适合 HTML Purifier。这个脚本做了它应该做的事情:</p> <pre><code>// requiring HTMLPurifier.auto.php up here somewhere, no other code up here but that. $dirtyHtml = ' <iframe width="560" height="315" src="https://www.youtube.com/embed/ydYDqZQpim8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> '; $knobs = [ 'AutoFormat.AutoParagraph' => false, 'AutoFormat.RemoveEmpty' => true, 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align', 'Filter.YouTube' => 'true', 'HTML.Allowed' => 'iframe[src|width|height|class|frameborder],h1,h2,h3,div,blockquote,table,tbody,tr,td,figure,b,strong,i,em,u,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]', 'HTML.Doctype' => 'HTML 4.01 Transitional', 'HTML.SafeIframe' => 'true', 'URI.SafeIframeRegexp' => '%.+%', ]; $config = HTMLPurifier_Config::createDefault(); foreach ($knobs as $setting => $value) { $config->set($setting, $value); } $purifier = new HTMLPurifier($config); $cleanHtml = $purifier->purify($dirtyHtml); echo $cleanHtml . PHP_EOL; </code></pre> <p>这给了我:</p> <pre><code><iframe width="560" height="315" src="https://www.youtube.com/embed/ydYDqZQpim8" frameborder="0"></iframe> </code></pre> <p>如果我注释掉 <pre><code>'youtube'</code></pre> 配置块中的行,则像这样:</p> <pre><code>// ... $knobs = [ 'AutoFormat.AutoParagraph' => false, 'AutoFormat.RemoveEmpty' => true, 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align', // 'Filter.YouTube' => 'true', 'HTML.Allowed' => 'iframe[src|width|height|class|frameborder],h1,h2,h3,div,blockquote,table,tbody,tr,td,figure,b,strong,i,em,u,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]', 'HTML.Doctype' => 'HTML 4.01 Transitional', // 'HTML.SafeIframe' => 'true', // 'URI.SafeIframeRegexp' => '%.+%', ]; // ... </code></pre> <p> ...然后我得到你的错误:</p> <pre><code>PHP Warning: Element 'iframe' is not supported (for information on implementing this, see the support forums) in /<...>/HTMLDefinition.php on line 311 PHP Stack trace: <...> </code></pre> <p>不幸的是,我对这里的 Laravel 集成一无所知,也不知道如何选择哪个配置处于活动状态,但是如果您确保 <pre><code>'youtube'</code></pre> 和 <pre><code>'default'</code></pre> 块实际上正在组合和使用,那应该可以解决您的问题问题。</p> </answer> <answer tick="false" vote="0"> <p>只需最后添加“youtube”作为配置,它在 laravel 10 中对我有用:<br/> <pre><code>clean($request->body, 'youtube');</code></pre></p> </answer> </body></html>
HTMLPurifier删除<a name="#someanchorname"><a>--如何阻止这种情况发生?
使用htmlpurifier 4.10,锚名标签被从文本中剥离出来。当前配置。$class_file = 'statichtmlpurifier-4.10.0-litelibraryHTMLPurifier.auto.php'; $...
HTMLPurifier从YouTube视频中删除允许全屏显示
出于某种原因,HTMLPurifier似乎正在从iframe中删除allowfullscreen元素,但我不确定为什么,我已经进行了一些研究,似乎无法找到一个使用了几年的答案。 ...
我在codeigniter应用程序中使用htmlpurifier。当我直接使用html进行过滤时。例如:$ dirty_html ='T est'; $ clean_html = purify($ ...
是否可以在HTMLPurifier中使用redis或备用缓存?
使用HTML Purifier(ezyang / htmlpurifier)或专门用于Laravel 7(由前者提供支持)(stevebauman / purify),是否可以使用替代文件系统的缓存?该文档暗示...
我正在尝试为htmlPurifier允许所有范围的数据属性,但是没有办法...我有这个字符串: [[[[[]]]] < [ HTML Purifier知道HTML的结构,并将此知识用作其白名单过程的基础。如果您将标准属性添加到白名单,则该属性不允许该属性的任意内容-它 理解 该属性,并且仍会拒绝没有意义的内容。 例如,如果某个地方的属性带有数字值,HTML Purifier仍会拒绝尝试为该属性输入值'foo'的HTML。如果添加自定义属性,仅将其添加到白名单并不能教HTML Purifier如何处理这些属性:在这些属性中可以期望哪些数据?哪些数据是恶意的? 这里有大量的文档,您可以在此处告诉HTML Purifier自定义属性的结构:Customize [<a> -tag的'target'属性有一个代码示例: $config = HTMLPurifier_Config::createDefault(); $config->set('HTML.DefinitionID', 'enduser-customize.html tutorial'); $config->set('HTML.DefinitionRev', 1); $config->set('Cache.DefinitionImpl', null); // remove this later! $def = $config->getHTMLDefinition(true); $def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top'); 这会将target添加为仅接受值"_blank","_self","_target"和"_top"的字段。这比实际的HTML定义要严格一些,但对于大多数目的来说完全足够。 这是data-time-start和data-time-end的通用方法。要进行可能的配置,请查看官方的HTML Purifier文档(如上链接)。从您的示例中我最大的猜测是,您不想要Enum#...,而是Number,就像这样... $def->addAttribute('span', 'data-time-start', 'Number'); $def->addAttribute('span', 'data-time-end', 'Number'); ...但是检查一下,看看最适合您的用例。 ((在实现此功能时,请不要忘记您还需要像当前一样在白名单中列出属性。) 对于id,应在配置中包括Attr.EnableID = true。我希望有帮助!
htmlpurifier nofollow仅适用于生成的链接
我正在使用HTML Purifier库进行网站的注释格式设置。但是,我注意到了一些东西。在我的设置中,我将HTML.nofollow设置为true。 'HTML.Nofollow'=>是,但是当我写...
我正在使用htmlPurifier过滤用户生成的html。我想使用特定规则集过滤所有图像URL,同时允许使用更多常规超链接。如何设置仅...
需要HTML Purifier和preg_match / $ _ GET / $ _ POST / FILTER_VALIDATE_EMAIL?
我想询问是否需要使用html净化器来避免XSS攻击,如果:已经使用了preg_match,例如:$ userid = $ _POST [“userid”]; if(!preg_match(“/ ^ [a-zA-Z0-9] {3,15} $ /”,$ userid)){...
有谁知道我应该如何配置HtmlPurifier来忽略其中的内容 tag? Currently I have something like this: require_once('HTMLPurifier.auto.php'); $config = ...
我正在使用HTMLPurifier来转义我网站中的字符。有效地将所有<和>转换为>和&lt。应该。我还想在网站内显示代码,但在放置时......