曹え 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;
}登录后可以留言提问!
微信扫码登录