В настоящее время я пытаюсь передать соответствие PCI для одного из сайтов моего клиента, но компания по тестированию обнаруживает уязвимость, которую я не понимаю!
(сайт удален) подробности из компании по тестированиюявляются следующие:
Проблема здесь заключается в уязвимости межсайтового скриптинга, которая обычно связана с приложениями электронной коммерции.Один из тестов добавил безвредный скрипт в запрос GET в конце URL вашего сайта.Он помечен как уязвимость межсайтового скриптинга, потому что тот же самый скрипт, который был введен пользователем (нашим сканером), был возвращен сервером без проверки в заголовке.В этом случае сценарий был возвращен в заголовке, поэтому наш сканер отметил уязвимость.
Вот тест, который я запустил со своего терминала для дублирования этого:
GET /? OsCsid =% 22% 3E% 3Ciframe% 20src = foo% 3E% 3C / iframe% 3E HTTP / 1.0 Хост: (удалено)
HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>">here</a>.</h2>
</body></html>
Решение этой проблемы состоит в том, чтобы санировать ввод данных пользователемэти типы запросов, убедившись, что символы, которые могут запускать исполняемые скрипты, не возвращаются в заголовке или на странице.
Во-первых, я не могу получить результат, который сделал тестер, он только когда-либо возвращаетЗаголовок 200, который не включает местоположение и не вернет перемещенную страницу объекта.Во-вторых, я не уверен, как (на iis 6) остановить его, возвращая заголовок со строкой запроса в нем!И наконец, почему код в заголовке имеет значение, ведь браузеры на самом деле не будут выполнять код из заголовка http?