$ _SERVER ['HTTP_REFERER'] безопасен?
Я использую $_SERVER ['HTTP_REFERER'] для создания динамической обратной ссылки.
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
Насколько это безопасно?
Ответы
Ответ 1
Не так.
Возможно, он отсутствует. (Возможно, неверно, некоторые личные пакеты брандмауэра запутывают референта по причинам конфиденциальности, нарушая спецификацию HTTP на этом пути)
Вы должны запускать что-либо извне вашей системы через htmlspecialchars
для защиты от атак XSS (хотя, IIRC, у реферирования никогда не должно быть опасных символов, поскольку они должны быть безопасными для URL-адресов, которые вы должны придерживаться всегда быть осторожным).
Браузеры поставляются с кнопками с обратной связью, хотя нет необходимости пытаться дублировать их функциональность (особенно, когда с этим, если пользователь нажимает ссылку, помеченную "назад", она не возвращает их в свою историю, поэтому нажмите нормальная кнопка назад концептуально возьмет их вперед).
Ответ 2
Это может быть безопасно, но не является надежным: из-за HTTP spec, HTTP_REFERER
is необязательно (некоторые клиенты вообще не отправляют этот заголовок, и некоторое "программное обеспечение безопасности" удаляет это из любого HTTP-запроса), и существует множество способов изменить этот заголовок. Некоторые браузеры отправляют ссылочную страницу, некоторые отправляют пустую строку, некоторые вообще не отправляют ее, некоторые могут отправлять фиктивные данные, некоторые могут отправить тетю Матильду; и, кроме того, вы не можете определить, получаете ли вы данные в этом заголовке или нет.
Итак, нет, я никогда не поверю, что HTTP_REFERER
содержит предыдущую страницу, и вы тоже.
Ответ 3
Это не так.
Он не может быть установлен, нежелателен или даже небезопасен.
Обратите внимание на следующее:
- Типы пользователей в вашем URL-адресе и хитах. Не будет реферера. Не только ваша задняя кнопка не будет работать, вы также получите сообщение об ошибке.
- Посетитель приходит из внешнего источника (скажем, google) на странице вашего продукта. вы хотите отправить своего посетителя в Google? Я так не думаю.
- Заголовок может быть изменен, я бы попросил его либо дважды проверить его, либо вообще не использовать.