使用HTML Purifier

一、使用HTML Purifier的要求 
php 5+
iconv
bcmath
tidy
二、基本用法 
默认下,使用UTF-8编码,和XHTML 1.0 Transitional文档类型. 
<?php  
require_once 'library/HTMLPurifier.includes.php';  
  
$dirty_html = <<<EOF  
<h1>Hello  
<script>alert("world");</script>  
EOF;  
  
$purifier = new HTMLPurifier();  
  
$cleanHtml = $purifier->purify($dirty_html);  


输出: 
<h1>Hello  
</h1>  


过滤了XSS代码,过滤规则:http://htmlpurifier.org/live/smoketests/xssAttacks.php
自动填充了残缺的标签
三、使用配置 
配置主要用于设置规则,使用比较简单 
$config = HTMLPurifier_Config::createDefault();  
// something....  
$purifier = new HTMLPurifier($config);  


详细的配置规则:http://htmlpurifier.org/live/configdoc/plain.html 


四、属性相关规则 
1.id规则 
默认下,HTML Purifier是不允许使用id的,可以通过Attr.EnableID选项来控制,当允许使用id的时候,有点需要注意,id只允许全局一个,后面重复的都会被去掉。 
$config->set('Attr.EnableID', true); // 允许使用id  
$config->set('Attr.IDPrefix', 'test_'); // 给所有id加上前缀test_  
$config->set('Attr.IDBlacklist', array( // 设置黑名单,会过滤掉设置的id,如果设置了id前缀,要把前缀也加上  
    'test_black_list'  
));  
$config->set('Attr.IDBlacklistRegexp', '/list_\d+/'); // 黑名单,使用正则匹配  


输入:
<a id="test_by_willko" href="aa">adf</a>  
<a id="black_list" href="aa">adf</a>  
<a id="black_list_2" href="aa">adf</a>  


输出:
<a id="test_by_willko" href="aa">adf</a>  
<a href="aa">adf</a>  
<a href="aa">adf</a>  


2.class规则 
默认下,是允许所有的class。属性Attr.AllowedClasses用于设置允许的class名,没被设置的class将被拒绝使用。而Attr.ForbiddenClasses则用于设置拒绝使用的class名。 
$config->set('Attr.AllowedClasses', array( // 设置允许使用的class名  
    'test_by_willko'  
));  
$config->set('Attr.ForbiddenClasses', array( // 设置拒绝使用的class名  
    'ignore'  
));  


输入:
<p class="test_by_willko">12345</p>  
<p class="ignore">78900</p>  


输出:
<p class="test_by_willko">12345</p>  
<p>78900</p> 




HTML Purifier 還有以下功能:
缺 closing tag 會補
輸入 <img src=""> 會變成 <img src="" alt="" />
form, input, script 自動消失 (除非設定 allow)
<p onclick="alert();">x</p> 會過濾成 <p>x</p>

你可能感兴趣的:(使用HTML Purifier)