Вопрос

Какой самый надежный и безопасный способ определить, с какой страницы отправляется или вызывается (через AJAX) текущая страница. Я не хочу использовать $ _ SERVER ['HTTP_REFERER'] из-за (недостаточной) надежности, и мне нужно, чтобы вызываемая страница получалась только из запросов, исходящих от моего сайта. < уш>
Изменить. Я хочу убедиться, что сценарий, который выполняет ряд действий, вызывается со страницы на моем веб-сайте.

Это было полезно?

Решение

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

Если вы хотите проверить, поступает ли запрос с вашего сайта, вы не можете этого сделать, но вы можете убедиться, что пользователь был на вашем сайте и / или прошел проверку подлинности. Файлы cookie отправляются в виде запросов AJAX, поэтому вы можете на это положиться.

Другие советы

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

$token = uniqid(mt_rand(), TRUE);

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

if(empty(

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

$token = uniqid(mt_rand(), TRUE);

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

<*>

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

GET['token']) ||

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

$token = uniqid(mt_rand(), TRUE);

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

<*>

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

GET['token'] !==

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

$token = uniqid(mt_rand(), TRUE);

Что мне показалось лучшим, так это токен CSRF и сохраните его в сеансе для ссылок, по которым вам нужно проверить реферер.

Итак, если вы генерируете обратный вызов FB, это будет выглядеть примерно так:

<*>

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

SESSION['token']) { show_404(); } //Continue with the rest of code

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Тогда index.php будет выглядеть так:

<*>

Я знаю о безопасных сайтах, которые делают то же самое для всех своих защищенных страниц.

Использование $ _SERVER ['HTTP_REFERER']

  

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

if (!empty(

Использование $ _SERVER ['HTTP_REFERER']

  

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

<*>SERVER['HTTP_REFERER'])) { header("Location: " .

Использование $ _SERVER ['HTTP_REFERER']

  

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

<*>SERVER['HTTP_REFERER']); } else { header("Location: index.php"); } exit;

Нет надежного способа проверить это. Это действительно под рукой клиента, чтобы сказать вам, откуда он пришел. Вы можете себе представить, что файлы cookie или информация о сессиях размещаются только на некоторых страницах вашего веб-сайта, но это нарушит работу пользователей с закладками.

У нас осталась только одна опция после прочтения всех проблем с поддельным реферером: то есть Страница, которую мы хотим отслеживать в качестве реферера, должна храниться в сеансе, и как ajax вызывается, затем проверяется в сеансе, имеет ли она значение страницы реферера, и выполняет действие, в противном случае ничего не предпринимая.

С другой стороны, когда он запрашивает какую-либо другую страницу, тогда установите значение сеанса реферера в null.

Помните, что переменная сеанса задается только для запроса страницы желаемого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top