переменные сервера — альтернатива HTTP_REFERER для сбора запрашивающего домена?

У меня есть простой пиксель отслеживания, используемый для проверки учетных записей пользователей:

<?php
header('Content-Type: image/gif');
readfile('trackingpixel.gif');

if(isset($_GET['a'])){
... stuff
}

if(isset($_GET['b'])){
... stuff
}

if(isset($_GET['c'])){
... stuff
}

$requesting = $_SERVER['HTTP_REFERER'];

... If requesting matches value stored in db, and a/b/c are all good, do stuff
?>

который доступен через:

<img src="http://thisismydomain.com/trackingpixel.php?a=...&b=...&c=..." />

И это обычно работает, как и ожидалось.

Идея состоит в том, что у некоторых пользователей есть свои собственные домены, и они хотят «заявить» о них и убедиться, что они являются настоящими владельцами. У нас есть другие варианты проверки (т. Е. Мета-теги), но это самый простой способ для самых простых пользователей — просто скопируйте и вставьте прозрачное изображение, и Боб станет вашей тетушкой.

Единственный $_SERVER переменная, которая содержит запрашивающий домен HTTP_REFERERНо даже самый простой поиск в Google вернет множество статей, в которых обсуждается ненадежность и легкость подмены ценности.

непосредственно из PHP.NET

‘HTTP_REFERER’

Адрес страницы (если есть), на которую ссылается
пользовательский агент для текущей страницы. Это устанавливается пользовательским агентом. Не все
Пользовательские агенты установят это, а некоторые предоставляют возможность изменять
HTTP_REFERER как функция. Короче говоря, этому нельзя доверять.

И есть множество сообщений SO, обсуждающих то же самое.

В таком виде полукомпетентная компьютерная обезьяна может подделать свой неверный домен, чтобы отобразить его как правильный, а затем поместить <img> на их странице. Мой PHP-скрипт будет думать, что все было честно, и проходить все условия.

Нет Буэно! Pas bien!

Есть ли альтернатива HTTP_REFERER, что я могу использовать для проверки запрашивающего домена? Что-то безопасное и желательно обязательное?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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