XSS, кодирование обратного URL - PullRequest
4 голосов
/ 01 декабря 2010

Вот уязвимый код

  <?php header("Location: ".$_POST['target']); ?>

Как правильно убрать неприятные вещи, попадающие в цель?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2010

Во-первых, это уязвимость

OWASP классифицирует ее как «Непроверенные перенаправления и пересылки».См. Руководство OWASP для получения дополнительной информации .

Возможно несколько интересных атак.См. в этой теме на сайте sla.ckers.org, где вы найдете идеи о том, как этим можно злоупотреблять.

Как защитить себя?

  • Проверьте схему URL.Обычно вы хотите поддерживать только http и https.Прервите запрос для любой другой схемы.
  • Разбор URL-адреса и извлечение домена.Разрешить только перенаправления в известный список доменов.Для других доменов отмените запрос.

Вот и все.

1 голос
/ 01 декабря 2010

В старых версиях PHP это была бы CRLF-инъекция .Тем не менее, это было исправлено, и теперь это просто нарушение OWASP A10 .Поэтому, чтобы ответить на ваш вопрос, ДА это уязвимость, поскольку она нарушает OWASP.

0 голосов
/ 01 декабря 2010

Это зависит от вашего дизайна и требований.но я думаю, что вместо того, чтобы запрашивать у пользователя весь путь, просто задайте дифференцирующий путь и добавьте свои собственные инициалы.Я имею в виду http://HOSTNAME/$userGivenPath

2-й, если вы знаете действительные пути, тогда проверяйте запись пользователя по этим допустимым путям.

3-й, если вы используете прямой $ _POST ['path'] rightтеперь, позже, вы также можете использовать его в других местах, например, требуют $ _POST [''].Таким образом, ваш способ использования POST может быть опасным.Таким образом, вам следует отфильтровать путь к файлу для \ .., \ .. \ .. и т. Д. Итак, лучше отфильтруйте ввод и помогите себе и другим, которые следуют вашему коду, написать лучший код.

0 голосов
/ 01 декабря 2010

Уязвимости нет.

Даже если пользователь может ввести в $_POST['target'] что угодно, так?Он будет перенаправлен на страницу, которую он хотел.Так же, как если бы он просто набрал другой адрес в адресной строке или изменил некоторые символы на этой странице с помощью firebug.

Если вы беспокоитесь о атаках типа CSRF, просто сделайте защиту от них.

UPD :

Для тех, кто считает, что это уязвимо, и кто отрицает меня (спасибо за отрицательное голосование за правду, вы только что подтвердили, что вам нечего сказать, просто отрицательное голосование):

Возьмите этот код http://pastebin.com/Jw4Zp3F5 и докажите, что он уязвим.

UPD 2 :

Итак, осталась 1 неделя.У меня есть много ссылок на статьи по безопасности и я прочитал много громких слов о том, что это уязвимость.Но NOONE доказал, что это действительно так.

Итак, господа эксперты, если это уязвимость, почему никто не доказал, что на основе моего сценария с уязвимой строкой ?Или все, что вы можете только сделать - просто указать на статью и ничего более, а?

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