博主最大Lv63
【原创文章】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 . "<br>";
- return $str;
- }
此段函数是从puyuetianPHP开发框架中提出来的,可以过滤掉保留下来的html标签的不合法内容,将其直接转化为html纯文本形式。
此文章为原创文章,转载请注明出处及作者:有天轻论坛(http://www.hadsky.com) & 作者:蒲乐天
0 已被阅读了1154次 楼主 2020-06-30 12:23:22