Как проверить, передается ли какая-либо переменная в GET в URL

У меня есть ситуация, когда кто-то пытается саботировать мою учетную запись Google AdSense, непрерывно отправляя личную информацию в URL моего сайта. Как я могу заблокировать это или, по крайней мере, обнаружить случайные величины, которые они используют?

Например, имя переменной может быть НИЧЕГО.

mysite.com/[email protected]

или же

mysite.com/[email protected]

…?

Единственное, что я могу придумать, это собрать известные переменные и затем выполнить перенаправление расположения заголовка на основной URL сайта.

1

Решение

Если: вы хотите, чтобы параметры 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 вы не должны иметь никакого выхода. В противном случае вы получите ошибку. Лучше разместите код в самом верху вашего скрипта.

0

Другие решения

$_GET зарезервированная переменная будет содержать любые параметры, переданные в URL.

var_dump($_GET);

Будет выводить:

array(1) {
["asdfd"]=>
string(22) "[email protected]"}

Если в этом массиве есть что-то, вы по существу их обнаружили. Кроме того, вы можете использовать логику, чтобы отсеять известные параметры запроса, которые вы можете использовать на своем сайте, и действовать соответствующим образом, если вы обнаружите, что считаете нужным.

0

По вопросам рекламы [email protected]