У меня есть ситуация, когда кто-то пытается саботировать мою учетную запись Google AdSense, непрерывно отправляя личную информацию в URL моего сайта. Как я могу заблокировать это или, по крайней мере, обнаружить случайные величины, которые они используют?
Например, имя переменной может быть НИЧЕГО.
mysite.com/[email protected]
или же
mysite.com/[email protected]
…?
Единственное, что я могу придумать, это собрать известные переменные и затем выполнить перенаправление расположения заголовка на основной 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) "[email protected]"}
Если в этом массиве есть что-то, вы по существу их обнаружили. Кроме того, вы можете использовать логику, чтобы отсеять известные параметры запроса, которые вы можете использовать на своем сайте, и действовать соответствующим образом, если вы обнаружите, что считаете нужным.