Как уже упоминалось в комментариях , этот сценарий, по-видимому, нельзя использовать с псевдопротоколом javascript:
(или data:
, который также можно использовать для выполнения JavaScript).Однако может оказаться возможным выполнить отраженную атаку XSS, если example.com
выведет userData
на пользовательской странице 404.Предположим, что на этой странице отображается сообщение об ошибке:
<h1>Page 'userData' not found.</h1>
В этом случае, если злоумышленник отправит полезную нагрузку JavaScript (например, <script>alert('xss');</script>
), она будет отображена на странице,
<h1>Page '<script>alert('xss');</script>' not found.</h1>
и код может быть выполнен посетителем.Эту атаку можно предотвратить, отфильтровав пользовательские данные - пользовательский ввод всегда должен быть очищен в любом случае.
Эксплойт с открытым перенаправлением не кажется очень вероятным, потому что пользовательский ввод добавляется в домен, и попытки эксплойта должны привести к ответу 404.Конечно, если есть другие локальные страницы, которые разрешают любые перенаправления, то злоумышленник может использовать их в своей полезной нагрузке, например:
vulnerable/page?url=http://attacker.com
Обратите внимание, что только потому, что я не могу подтвердить эксплойт, который не делаетозначает, что код не уязвим, в зависимости от конфигурации сервера.Мы можем предотвратить эксплойты с открытым перенаправлением, отфильтровывая пользовательские данные на основе списка допустимых и надежных расположений.Это также может помочь с несколькими другими атаками, нацеленными на сервер, такими как обратный путь в каталогах, включение файлов и подделка запросов на стороне сервера.