PHP 防止恶意重定向:限制重定向次数,随机生成域名
//u003c?php/n// 检查网址是否包含/'ad.94zhe.ltd/'/n/$current_url = //$_SERVER['HTTP_HOST'] . //$_SERVER['REQUEST_URI'];/nif (strpos(/$current_url, /'ad.94zhe.ltd/') !== false) {/n // 检查是否已经重定向过/n if (!isset(//$_SESSION['redirected'])) {/n // 检查重定向次数/n if (!isset(//$_SESSION['redirect_count'])) {/n //$_SESSION['redirect_count'] = 0;/n }/n/n // 设置最大重定向次数/n /$max_redirects = 3;/n/n // 设置重定向的时间间隔(单位:秒)/n /$redirect_interval = 3600; // 1小时/n/n // 检查是否已经过了一个小时/n if (!isset(//$_SESSION['last_redirect_time']) || (//$_SESSION['last_redirect_time'] + /$redirect_interval) <= time()) {/n //$_SESSION['redirect_count'] = 0;/n //$_SESSION['last_redirect_time'] = time();/n }/n/n // 检查是否达到最大重定向次数/n if (//$_SESSION['redirect_count'] < /$max_redirects) {/n //$_SESSION['redirected'] = true;/n //$_SESSION['redirect_count']++;/n/n // 生成随机域名/n /$domain = generateRandomDomain();/n/n // 获取当前请求的参数/n /$parameters = //$_SERVER['QUERY_STRING'];/n/n // 构建重定向URL/n /$redirect_url = /'http:///' . /$domain . /'/app/index.php?/' . /$parameters; // 替换为你的重定向URL路径/n/n // 发起重定向/n header(/'Location: /' . /$redirect_url);/n exit(); // 终止后续输出/n } else {/n // 达到最大重定向次数时的处理/n // 可以输出错误信息或者做其他操作/n echo /'重定向次数过多/';/n exit();/n }/n }/n}/n// 生成随机域名的函数/nfunction generateRandomDomain() {/n /$allowed_chars = 'abcdefghijklmnopqrstuvwxyz0123456789';/n /$random_string = '';/n /$length = 10; // 生成域名的长度/n/n // 生成随机字符串/n for (/$i = 0; /$i < /$length; /$i++) {/n /$random_string .= /$allowed_chars[rand(0, strlen(/$allowed_chars) - 1)];/n }/n/n // 检查生成的域名是否与上一次重定向的域名相同/n if (/$random_string == //$_SESSION['last_redirect_domain']) {/n // 如果相同,则再次调用函数生成新的域名/n return generateRandomDomain();/n }/n/n // 拼接域名/n /$domain = /$random_string . /'.ad.94zhe.ltd/'; // 可以根据需要更改后缀/n/n // 保存本次生成的域名/n //$_SESSION['last_redirect_domain'] = /$domain;/n/n return /$domain;/n}/n设置重定向的URL与上一次不同,停止重定向内容:在代码中,生成重定向URL的函数generateRandomDomain()会生成一个随机的域名。你可以根据需要修改该函数,让其生成一个与之前不同的域名。/n/n例如,你可以修改generateRandomDomain()函数如下:/n/nphp/n// 生成随机域名的函数/nfunction generateRandomDomain() {/n /$allowed_chars = 'abcdefghijklmnopqrstuvwxyz0123456789';/n /$random_string = '';/n /$length = 10; // 生成域名的长度/n/n // 生成随机字符串/n for (/$i = 0; /$i < /$length; /$i++) {/n /$random_string .= /$allowed_chars[rand(0, strlen(/$allowed_chars) - 1)];/n }/n/n // 检查生成的域名是否与上一次重定向的域名相同/n if (/$random_string == //$_SESSION['last_redirect_domain']) {/n // 如果相同,则再次调用函数生成新的域名/n return generateRandomDomain();/n }/n/n // 拼接域名/n /$domain = /$random_string . /'.ad.94zhe.ltd/'; // 可以根据需要更改后缀/n/n // 保存本次生成的域名/n //$_SESSION['last_redirect_domain'] = /$domain;/n/n return /$domain;/n}/n/n/n这样,每次生成的随机域名都会与上一次不同。
原文地址: https://www.cveoy.top/t/topic/pA0V 著作权归作者所有。请勿转载和采集!