【原创文章】PHP实现bbcode安全html标签功能

puyuetian 乐天 关注 九级站长 创始人
发表于PHP学习相关文章版块

  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 . "<br>";
	return $str;
}

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


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


评论列表 评论
guest 游客 入门站长 普通 0#
啊啊啊
共0条回复,点击查看回复
guest 游客 入门站长 普通 0#
发射点发生
共0条回复,点击查看回复
guest 游客 入门站长 普通 0#







hbc
共0条回复,点击查看回复
guest 游客 入门站长 普通 0#
回复 游客 :0101001
共0条回复,点击查看回复
guest 游客 入门站长 普通 0#
共0条回复,点击查看回复
发布评论

评论: 【原创文章】PHP实现bbcode安全html标签功能

已有0次打赏
(17) 分享
分享

请保存二维码或复制链接进行分享

取消