Php 如何检查是否传递了任何变量以进入URL
我遇到过这样一种情况:有人试图破坏我的谷歌adsense帐户,不断向我网站的URL发送个人识别信息。我如何阻止这一点,或者至少检测他们使用的随机变量 例如,变量名可以是任何内容 mysite.com/?asdfd=emailaddress@gmail.com 或 mysite.com/?gfrewgtr1=emailaddress@gmail.com 我唯一能想到的就是收集已知变量,然后执行头位置重定向到主站点URL。将包含URL中传递的任何参数Php 如何检查是否传递了任何变量以进入URL,php,url,pii,Php,Url,Pii,我遇到过这样一种情况:有人试图破坏我的谷歌adsense帐户,不断向我网站的URL发送个人识别信息。我如何阻止这一点,或者至少检测他们使用的随机变量 例如,变量名可以是任何内容 mysite.com/?asdfd=emailaddress@gmail.com 或 mysite.com/?gfrewgtr1=emailaddress@gmail.com 我唯一能想到的就是收集已知变量,然后执行头位置重定向到主站点URL。将包含URL中传递的任何参数 var_dump($_GET); 将输出:
var_dump($_GET);
将输出:
array(1) {
["asdfd"]=>
string(22) "emailaddress@gmail.com"
}
如果该数组中有任何内容,则基本上已检测到它们。您还可以进一步使用逻辑删除站点中可能使用的已知查询参数,并在发现任何您认为可操作的参数时采取相应的行动。如果:您不想使用GET参数,请检查$\u GET是否为空
if (!empty($_GET)) {
header('Location: ' . $_SERVER['SCRIPT_NAME']);
exit;
}
或:检查$\u 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
注意:在任何标题之前,您不得有任何输出。否则你会得到一个错误。最好将代码放在脚本的最上面
如果您没有使用GET变量,这不重要吗?它确实重要;当显示adsense广告时,如果它们在url中,则会传递给google。因为这是一个电子邮件地址,他们认为这违反了政策。在这种情况下,这是这个的副本->@ChrisHully你应该用Al.g的答案把他的片段放在你的脚本顶部。这样一来,如果$\u GETProlly中有标记的变量,就不会触发GA javascript。值得一提的是,这应该在他的脚本的顶部,否则可能会执行GA。当然,这应该放在任何输出打印之前。我只是习惯了这样做,所以我甚至没有想到在我的帖子中提到它。我使用第二个选项允许一些变量。它在我的脚本的最顶端,在任何输出之前。它似乎没有捕获坏的变量,也没有重定向。输入example.com/?abc=123将导致url仅为r,id是允许的参数。