2015-04-17 5 views
1

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

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

mysite.com/[email protected]

или

mysite.com/[email protected]

...?

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

+0

Если вы не используете переменные GET, это не имеет значения? – adeneo

+0

это имеет значение; если они указаны в URL-адресе, когда отображается объявление AdSense, оно передается в google. Поскольку это адрес электронной почты, он рассматривает это как нарушение политики. –

+0

В этом случае это дубликат этого -> http://stackoverflow.com/questions/29356043/remove-unwanted-email-address-from-url – adeneo

ответ

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() s вы не должны иметь никакого выхода. В противном случае вы получите сообщение об ошибке. Лучше поместите код в самый верх вашего скрипта.

+0

. Хорошо сказать, что это должно быть в верхней части его скрипта, иначе шансы на то, что GA исполняется в любом случае – DarkBee

+0

Конечно, это должно быть перед печатью вывода. Я просто привык делать это таким образом, поэтому я даже не подумал упомянуть об этом в своем посте. –

+0

Я использую второй вариант, позволяющий некоторые переменные. Он находится на самом верху моего скрипта, до любого выхода. Похоже, что он не улавливает плохие переменные, это не перенаправление. Ввод example.com/?abc=123 приводит к URL-адресу http://www.example.com/?abc=123 (только «r», «id» являются допустимыми_парамами). –

0

$_GET reserved variable будет содержать любые параметры, переданные по URL-адресу.

var_dump($_GET); 

Выведет:

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

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