首页 技术文章 php

html过滤器HTML Purifier

发布日期: 2024-04-26
FontSize: 【
html过滤器HTML Purifier

HTML Purifier是一个用于过滤和清理html代码的php库。它可以帮助开发者确保用户提交的html代码是安全的,并且符合预定义的一组允许的HTML标签和属性。可以有效的防止跨站脚本攻击(xss)和其他安全漏洞。

本文基于的版本:4.15.0

官网:http://htmlpurifier.org

下载:http://htmlpurifier.org/releases/htmlpurifier-4.15.0.zip

一个最简单的示例:

<?php
require_once '/vendor/htmlpurifier-4.15.0/library/HTMLPurifier.auto.php';//自行修改文件正确的路径
$dirty_html = 'HTMLPurifier test<script src="https://example.com/js/example.js" type="text/javascript"></script><script>alert("hi")</script>';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
echo $clean_html;

结果是:HTMLPurifier test

所有的js脚本都被过滤掉了,HTML Purifier表明,它的默认配置非常安全,应该适用于许多用户。 如果您需要html而不允许js,这样配置就可以用了。

更多配置:

清空所有html标签:

$config->set('HTML.Allowed', '');

因为没有设置允许的标签,所以结果会清空所有标签。

清除空标签:

$config->set('AutoFormat.RemoveEmpty', true)

自动添加target属性值为’_blank’:

$config->set('HTML.TargetBlank', true)

必须是正确的链接,例如http://localhost,//localhost,如果是localhost,则不会添加target="_blank"。

关闭缓存,为了使开发更容易,我们将暂时关闭定义缓存

$config->set('Cache.DefinitionImpl',null)

部分配置还是相当复杂难以理解,css与js都直接被过滤掉。