我有一种情况,有人试图通过不断将个人身份信息发送到我网站的 URL 来破坏我的 google adsense 帐户。我怎样才能阻止这个或至少检测他们正在使用的随机变量?
例如,变量名可以是任何东西。
mysite.com/?asdfd=emailaddress@gmail.com
或者
mysite.com/?gfrewgtr1=emailaddress@gmail.com
...?
我唯一能想到的就是收集已知变量,然后将标头位置重定向到主站点 URL。
如果:你不想有 GET 参数,检查 $_GET 是否为空
if (!empty($_GET)) {
header('Location: ' . $_SERVER['SCRIPT_NAME']);
exit;
}
或者:检查$_GET
不允许的参数:
$allowed_params = ["id", "some_param", "another one"];
foreach($_GET as $key => $val)
if (!in_array($key, $allowed_params)) {
// if something's wrong, get out!
echo('Location: '.$_SERVER['SCRIPT_NAME']);
exit;
}
// everything is ok here
注意:在任何
header()
s 之前你不能有任何输出。否则你会得到一个错误。最好将代码放在脚本的最顶部。
$_GET
保留变量将包含 URL 中传递的任何参数。
var_dump($_GET);
将输出:
array(1) {
["asdfd"]=>
string(22) "emailaddress@gmail.com"
}
如果该数组中有任何东西,那么您基本上已经检测到它们。您可以进一步使用逻辑来清除您可能在您的网站周围使用的已知查询参数,并在您发现任何您认为可操作的内容时采取相应的行动。