根据白名单对字符串进行过滤。如果字符串包含白名单意外的html标签,或者白名单允许的标签但属性不在白名单内,则这些部分会被过滤掉。 无 ?php/** * Prevent XSS. * * @author liuxd */class XssFilter{ /** * 设置标签和属性的白名单。 * @param array $p_a
根据白名单对字符串进行过滤。如果字符串包含白名单意外的html标签,或者白名单允许的标签但属性不在白名单内,则这些部分会被过滤掉。
<?php /** * Prevent XSS. * * @author liuxd */ class XssFilter { /** * 设置标签和属性的白名单。 * @param array $p_aTags * @param array $p_aAttr */ public function __construct($p_aTags, $p_aAttr) { $this->aTags = $p_aTags; $this->aAttr = $p_aAttr; } /** * 过滤器。 * @param string $p_sInput * @return string */ public function filter($p_sInput) { $aMatches = []; $sPattern = '/<([a-zA-Z]+).*>.*<\/\1>/'; preg_match_all($sPattern, $p_sInput, $aMatches); $sInput = $p_sInput; if (empty($aMatches[1])) { return $sInput; } list ($aContents, $aTags) = $aMatches; foreach ($aTags as $iKey => $sTag) { if (!in_array($sTag, $this->aTags)) { // 标签不合法 $sInput = str_replace($aContents[$iKey], '', $sInput); } else { $aTag = []; preg_match('/<' . $sTag . '.*?>/', $aContents[$iKey], $aTag); $aAttr = explode(' ', $aTag[0]); if (!$this->checkAttr($aAttr)) { // 标签虽然合法,但是包含了不合法的属性。 $sInput = str_replace($aContents[$iKey], '', $sInput); } } } return trim($sInput); } /** * 检查合法标签是否有非法属性。 * @param array $p_aAttr 标签熟悉列表 * @return bool */ private function checkAttr($p_aAttr) { $bResult = true; foreach ($p_aAttr as $sAttr) { $sAttrName = strstr($sAttr, '=', true); if ($sAttrName === false) { continue; } if (!in_array($sAttrName, $this->aAttr)) { $bResult = false; } } return $bResult; } } # end of this file
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
2 周前ByDDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

禅工作室 13.0.1
功能强大的PHP集成开发环境