Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查是否传递了任何变量以进入URL_Php_Url_Pii - Fatal编程技术网

Php 如何检查是否传递了任何变量以进入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); 将输出:

我遇到过这样一种情况:有人试图破坏我的谷歌adsense帐户,不断向我网站的URL发送个人识别信息。我如何阻止这一点,或者至少检测他们使用的随机变量

例如,变量名可以是任何内容

mysite.com/?asdfd=emailaddress@gmail.com

mysite.com/?gfrewgtr1=emailaddress@gmail.com

我唯一能想到的就是收集已知变量,然后执行头位置重定向到主站点URL。

将包含URL中传递的任何参数

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是允许的参数。