//xss攻击演示代码 $str = '<img src="http://www.baidu.com/img/bdlogo.png" width="180" onload="window.location=\'http://www.baidu.com\'">'; //echo $str; //页面自动跳转到baidu.com $p = new CHtmlPurifier(); $str = $p->purify($str); echo $str; //已是安全代码
单独使用
require_once __DIR__ . ‘/HTMLPurifier.standalone.php’;
$html = ‘test‘;
$config = HTMLPurifier_Config::createDefault();
//HTMLPurifier的配置文档主要是两级分类:
//大类分Attr(属性)、HTML(html标签)、AutoFormat(自动格式)、CSS(css配置)、Output(输出配置)
//小类选择通过大类名称加.加小类名称可以完成
//过滤掉所有html标签很简单,原因则在白名单机制完成
$config->set(‘HTML.Allowed’, ”);
//配置允许的html标签
$config->set(‘HTML.Allowed’, ‘p,a,b,span’);
//保留超链接标签a及其href链接地址属性
$config->set(‘HTML.Allowed’, ‘a[href]’);
//并自动添加target属性值为’_blank’
$config->set(‘HTML.TargetBlank’, true);
// 让文本自动添加段落标签,前提是必须允许P标签的使用
//$config->set(‘HTML.Allowed’, ‘p’);
//$config->set(‘AutoFormat.AutoParagraph’, true);
//$config->set(‘HTML.Allowed’, ‘p,a,b,span’);
// 清除空标签
$config->set(‘AutoFormat.RemoveEmpty’, true);
$purifier = new HTMLPurifier($config);
$html = $purifier->purify($html);
echo htmlspecialchars($html);