zhong8808
新手上路

UID 114785
精华
0
积分 0
帖子 5
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2008-3-17
状态 离线
|
文本编辑器里html代码安全的问题
本文由第一空间互助社区shaoyangbiz原创
无论是ASP、还是PHP,有很多的editor都转用html编辑器,放弃了传统的UBB编辑器,如果是自己或自己信的过的人提交带有HTML代码,可能这不会出现什么问题,但是如果给别有用心失利用了,可能会有很大的隐患,但是全部屏蔽了HTML,那又不会显示我们想要的效果。
于是KSES出现了,KSES就是过滤全部除程序员指定的HTML TAG以外的一个函数,同时KSES是开源的。
KSES的官方网站地址是:http://sourceforge.net/projects/kses 你可以在这下载最新的kses
下载好,取出来根目录的里的 kses.php,然后我们动手做一个测试
<?
include 'kses.php';
//定义一个用来测试的带有HTML TAG的字符串
$string = '<strong>test STRONG tag</strong>,<b>test B tag</b>';
//允许的html tag 数组
$kses_allowed = array (
'address' => array (),
'a' => array ('href' => array (), 'title' => array (), 'rel' => array (), 'rev' => array (), 'name' => array ()),
'abbr' => array ('title' => array ()),
'acronym' => array ('title' => array ()),
'strong' => array (),
'big' => array (),
'blockquote' => array ('cite' => array ()),
'br' => array (),
'button' => array ('disabled' => array (), 'name' => array (), 'type' => array (), 'value' => array ()),
'caption' => array ('align' => array ()),
'code' => array (),
'col' => array ('align' => array (), 'char' => array (), 'charoff' => array (), 'span' => array (), 'valign' => array (), 'width' => array ()),
'del' => array ('datetime' => array ()),
'dd' => array (),
'div' => array ('align' => array ()),
'dl' => array (),
'dt' => array (),
'em' => array (),
'fieldset' => array (),
'font' => array ('color' => array (), 'face' => array (), 'size' => array ()),
'form' => array ('action' => array (), 'accept' => array (), 'accept-charset' => array (), 'enctype' => array (), 'method' => array (), 'name' => array (),'id' => array (), 'target' => array ()),
'h1' => array ('align' => array ()),
'h2' => array ('align' => array ()),
'h3' => array ('align' => array ()),
'h4' => array ('align' => array ()),
'h5' => array ('align' => array ()),
'h6' => array ('align' => array ()),
'hr' => array ('align' => array (), 'noshade' => array (), 'size' => array (), 'width' => array ()),
'i' => array (),
'img' => array ('alt' => array (), 'align' => array (), 'border' => array (), 'height' => array (), 'hspace' => array (), 'longdesc' => array (), 'vspace' => array (), 'src' => array (), 'width' => array ()),
'ins' => array ('datetime' => array (), 'cite' => array ()),
'kbd' => array (),
'label' => array ('for' => array ()), 'legend' => array ('align' => array ()),
'li' => array (),
'p' => array ('align' => array ()),
'pre' => array ('width' => array ()),
'q' => array ('cite' => array ()),
's' => array (),
'strike' => array (),
'sub' => array (),
'sup' => array (),
'table' => array ('align' => array (), 'bgcolor' => array (), 'border' => array (), 'cellpadding' => array (), 'cellspacing' => array (), 'rules' => array (), 'summary' => array (), 'width' => array ()),
'tbody' => array ('align' => array (), 'char' => array (), 'charoff' => array (), 'valign' => array ()),
'td' => array ('abbr' => array (), 'align' => array (), 'axis' => array (), 'bgcolor' => array (), 'char' => array (), 'charoff' => array (), 'colspan' => array (), 'headers' => array (), 'height' => array (), 'nowrap' => array (), 'rowspan' => array (), 'scope' => array (), 'valign' => array (), 'width' => array ()),
'textarea' => array ('cols' => array (), 'rows' => array (), 'disabled' => array (), 'name' => array (), 'readonly' => array ()),
'tfoot' => array ('align' => array (), 'char' => array (), 'charoff' => array (), 'valign' => array ()),
'th' => array ('abbr' => array (), 'align' => array (), 'axis' => array (), 'bgcolor' => array (), 'char' => array (), 'charoff' => array (), 'colspan' => array (), 'headers' => array (), 'height' => array (), 'nowrap' => array (), 'rowspan' => array (), 'scope' => array (), 'valign' => array (), 'width' => array ()),
'thead' => array ('align' => array (), 'char' => array (), 'charoff' => array (), 'valign' => array ()),
'title' => array (),
'tr' => array ('align' => array (), 'bgcolor' => array (), 'char' => array (), 'charoff' => array (), 'valign' => array ()),
'tt' => array (),
'u' => array (),
'ul' => array (),
'ol' => array (),
'var' => array ()
);
//输出过滤后的结果
echo kses($string, $kses_allowed);
?>
什么结果,自己看一看吧
|
|