Вопрос
Какой самый надежный и безопасный способ определить, с какой страницы отправляется или вызывается (через 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.
Помните, что переменная сеанса задается только для запроса страницы желаемого.