$ _SERVER безопасен?

Я использую $ _SERVER ['HTTP_REFERER'] для создания динамической обратной ссылки.

<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a> 

Это разумно безопасно?

Не таким образом.

Возможно, это не так. (Возможно, это неверно, некоторые личные пакеты брандмауэра запутывают референта по причинам конфиденциальности, нарушая спецификацию HTTP на этом пути)

Вы должны запускать все, что приходит извне вашей системы через htmlspecialchars для защиты от атак XSS (хотя, IIRC, у реферирования никогда не должно быть опасных символов, поскольку они должны быть безопасными для URL-адресов, вы должны придерживаться привычки всегда быть осторожными).

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

Он может быть безопасным, но он не является надежным : из-за спецификации HTTP HTTP_REFERER является обязательным (некоторые клиенты вообще не отправляют этот заголовок, а некоторые «защитные» программы удаляют это из любого HTTP-запроса), и есть многочисленные способы изменения этого заголовка. Некоторые браузеры отправляют ссылочную страницу, некоторые отправляют пустую строку, некоторые вообще не отправляют ее, некоторые могут отправлять фиктивные данные, некоторые могут отправить тетю Матильду; и, кроме того, вы не можете определить, получаете ли вы данные в этом заголовке или нет.

Итак, нет, я бы никогда не верил, что HTTP_REFERER содержит предыдущую страницу, и вы тоже.

Это не. Он не может быть установлен, нежелателен или даже небезопасен.

Учтите следующее:

  1. Типы пользователей в вашем URL и хитах идут. Не будет реферера. Не только ваша задняя кнопка не будет работать, вы также получите сообщение об ошибке.
  2. Посетитель приходит из внешнего источника (скажем, google) на странице вашего продукта. вы хотите отправить своего посетителя в Google? Я так не думаю.
  3. Заголовок может быть изменен, я бы попробовал либо дважды проверить его, либо не использовать его вообще.