如何检查是否有任何变量传递给URL中的GET

时间:2015-04-17 17:07:46

标签: php url pii

我的情况是,有人试图通过不断将个人身份信息发送到我网站的网址来破坏我的Google AdSense帐户。如何阻止或至少检测他们正在使用的随机变量?

例如,变量名称可以是ANYTHING。

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

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

...

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

2 个答案:

答案 0 :(得分:0)

$_GET reserved variable将包含网址中传递的所有参数。

var_dump($_GET);

将输出:

array(1) {
  ["asdfd"]=>
  string(22) "emailaddress@gmail.com"
}

如果该阵列中有任何内容,您实际上已经检测到它们。您可以进一步使用逻辑来清除您在网站周围可能使用的已知查询参数,并在您发现任何您认为可操作的内容时采取相应措施。

答案 1 :(得分:0)

如果:您想要没有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()之前,您不能有任何输出。否则你会收到错误。最好将代码置于脚本的最顶层。