曹え 5811 发布于:2024-06-13 03:40:01
//如果有非法字符显示错误 function containsXSS($url) { // 检查URL中是否包含非法字符 if (preg_match('/<(?:[^>]+[\s\n]*>|[^>]*>)|\son[a-zA-Z]+=("|\').*?("|\')/i', $url)) { return true; } // 如果没有非法字符,返回false return false; } // 获取当前URL $currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 检查当前URL是否包含XSS非法字符 if (containsXSS($currentUrl)) { echo '参数错误'; } // 过滤 function filterXSS($input) { // 使用htmlspecialchars函数转换特殊字符为HTML实体 $input = htmlspecialchars($input, ENT_QUOTES | ENT_HTML5); // 使用正则表达式删除不安全的标签和属性 $input = preg_replace('/<(?:[^>]+[\s\n]*>|[^>]*>)/is', '', $input); $input = preg_replace('/style=.*?"/i', '', $input); $input = preg_replace('/on[a-zA-Z]+=("|\').*?("|\')/i', '', $input); // 返回过滤后的输入 return $input; } // 过滤GET数据 function filterGET() { foreach ($_GET as $key => $value) { $_GET[$key] = filterXSS($value); } } // 过滤POST数据 function filterPOST() { foreach ($_POST as $key => $value) { $_POST[$key] = filterXSS($value); } } // 在处理用户输入之前调用过滤函数 filterGET(); filterPOST();
function containsSpecialChars($string) { // 定义需要检查的特殊字符及其URL编码形式 $specialChars = ['<', '>', "'", '"', '%3C', '%3E', '%27', '%22']; // 遍历特殊字符数组,检查字符串是否包含这些字符 foreach ($specialChars as $char) { if (strpos($string, $char) !== false) { return true; } } // 如果没有找到这些符号,返回false return false; }
登录后可以留言提问!
微信扫码登录