Подтвердить что ты не робот

URLReferrer имеет значение null, если страница HTTPS

Мы используем URLReferrer и код, переданный в строке запроса, для создания онлайн-видео, чтобы только наши платные клиенты могли ссылаться на нашу страницу воспроизведения видео. Эта система работала хорошо в течение некоторого времени. Я знаю, что URL-адрес реферирования может быть подделан, но кто скажет своим клиентам делать такую ​​вещь для доступа к видео? Это сработало для нас.

Однако сегодня меня спросили о ком-то, для кого это не сработало. URLReferrer имеет значение NULL, а их сайт - HTTPS. Я читал в Интернете, и у меня создается впечатление, что нет способа получить доступ к рефереру URL-адреса, когда исходной страницей является https. Это верно? Если бы я сделал https-версию нашего сайта, это разрешило бы это? Или есть ли другой способ обойти это?

Спасибо

4b9b3361

Ответ 1

Ваши онлайн-исследования верны. Основная причина не устанавливать заголовок или эквивалент HTTP Referrer в том, что это может быть проблемой безопасности. Реферер содержит "откуда вы пришли", это личная информация и не должна подвергаться воздействию других, какое использование в противном случае имеет безопасный сайт, если каждый может отслеживать, где вы были?

Итак: вы не можете получить реферер, если реферер зашифрован (с помощью SSL или иным образом).


Обновление: здесь, что HTTP-спецификация говорит о выходе из безопасного сайта:

Клиенты НЕ ДОЛЖНЫ включать поле заголовка Referer в (незащищенном) HTTP-запрос, если ссылочная страница была передана с защищенным Протокол.

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