合法的php标签,【原创文章】PHP实现bbcode安全html标签功能

php自带strip_tags函数,可以过滤掉html标签,保留所需标签,但此功能有不足,就是不能过滤掉保留下来的标签的属性,这给xxs漏洞创造了机会,如何处理呢?我写了一段二次过滤标签属性的php bbcode函数:

function BBcode($str, $marks = null) {

if ($marks === null) {

global $BBCODEMARKS;

global $SET_BBCODEMARKS;

if ($SET_BBCODEMARKS) {

$marks = $SET_BBCODEMARKS;

} else {

$marks = $BBCODEMARKS;

}

}

$str = strip_tags($str, $marks);

//$htmljsmarks = explode(',', $HTMLJSMARKS);

$str1len = $str2len = 0;

if (preg_match_all('/\/', $str, $match)) {

//print_r($match);

foreach ($match as $value) {

foreach ($value as $value2) {

//print_r($value2);

$value2 = htmlspecialchars(strtolower($value2));

$str1len += strlen($value2);

$str2len += strlen(preg_replace('/on([a-z]+)=/', '', $value2));

}

if ($str1len != $str2len) {

$str = htmlspecialchars($str);

break;

}

}

}

//echo $str1len . " " . $str2len . "
";

return $str;

}

此段函数是从puyuetianPHP开发框架中提出来的,可以过滤掉保留下来的html标签的不合法内容,将其直接转化为html纯文本形式。

此文章为原创文章,转载请注明出处及作者:有天轻论坛(http://www.hadsky.com) & 作者:蒲乐天

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值