Является ли $ _SERVER ['HTTP_REFERER'] опасным, если я использую массив предопределенных URL для проверки? - PullRequest
1 голос
/ 06 марта 2012

Я делаю страницу входа для моего приложения. Когда пользователь хочет перейти к «myaccount.php», но он не вошел в систему, он перенаправляется на login.php.

Когда вход в систему будет успешным, я хочу, чтобы он был перенаправлен на $_SERVER['HTTP_REFERER'], что будет различными страницами моего приложения.

Я прочитал на форуме, что ['HTTP_REFERER'] может быть опасным.

Но что, если я создам массив типа ('myaccount.php', 'mycart.php' и т. Д ...) и сравню этот массив с $_SERVER['HTTP_REFERER'], защитит ли это меня от потенциального злонамеренного использования этой функции?

Ответы [ 3 ]

5 голосов
/ 06 марта 2012

В этом случае не особенно опасно перенаправлять на $_SERVER['HTTP_REFERRER'], потому что, если конечный пользователь совершает что-то вредоносное, он просто перенаправляется на вредоносного инжектора.Пока вы проверяете разрешения в начале каждого сценария, пользователь не сможет получить доступ к области вашего сайта, к которой у него не должно быть доступа (например, к консоли администратора).Однако если вам не удалось проверить разрешения для каждого сценария и пользователь создал заголовок ложного реферера, его можно использовать для перехода в область вашего сайта, которая не должна быть доступной.

В целомхотя HTTP_REFERRER не является конкретным источником опасности.На него просто нельзя положиться, чтобы он был установлен и содержал правильную информацию.

2 голосов
/ 06 марта 2012

Я прочитал на форуме, что ['HTTP_REFERER'] может быть опасным.

Я полагаю, что двумя наиболее распространенными недостатками, связанными с этим, являются внедрение заголовка и открытое перенаправление

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

0 голосов
/ 06 марта 2012

$ _ SERVER ["HTTP_REFERER"] не опасен - он просто контролируется злоумышленником.Это не повредит вам, если вы не доверяете ему для предоставления дополнительных разрешений кому-либо (например, не думайте, что кто-то, кто только что пришел с success-login.php, успешно вошел в систему!)

Перенаправление пользователя не делает '• не предоставляет никаких специальных разрешений пользователю, поэтому перенаправление злоумышленника на строку, контролируемую злоумышленником, никоим образом не нарушит безопасность вашего сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...