Нужна ли дополнительная безопасность XSS для веб-сайтов ASP.NET 4? - PullRequest
5 голосов
/ 02 августа 2011

Из того, что я понимаю о том, что делает ASP.NET, и из моего личного тестирования различных тестов XSS, я обнаружил, что мой веб-сайт ASP.NET 4 не требует каких-либо предупреждений XSS.

Считаете ли вы, что веб-сайту ASP.NET 4.0 требуется дополнительная безопасность XSS, чем параметры по умолчанию?Я не могу вводить в текстовые поля какие-либо javascript или какие-либо теги, которые затем немедленно распечатываются на странице.

Ответы [ 2 ]

10 голосов
/ 02 августа 2011

Отказ от ответственности - это основано на очень параноидальном определении того, что такое «доверенный результат», но когда дело доходит до веб-безопасности, я не думаю, что вы МОЖЕТЕ быть слишком параноидальным.

Взято со страницы OWASP, ссылки на которую приведены ниже: Ненадежные данные чаще всего часто данные, поступающие из HTTP-запроса, в виде URL параметры, поля формы, заголовки или файлы cookie. Но данные, которые поступают из базы данных, веб-сервисы и другие источники часто не заслуживают доверия с точки зрения безопасности. То есть это не могло быть идеально ПРОВЕРЯЕМЫЕ.

В большинстве случаев вам нужна дополнительная защита, если вы берете данные из ЛЮБОГО источника и выводите их в HTML. Это включает в себя данные, извлеченные из файлов, баз данных и т. Д. - гораздо больше, чем просто ваши текстовые поля. У вас может быть совершенно заблокированный веб-сайт, и кто-то может напрямую перейти в базу данных с помощью другого инструмента и иметь возможность вставлять вредоносный скрипт.

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

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

Если вы этого еще не сделали, ознакомьтесь с информацией здесь: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

и просмотрите другие известные угрозы на сайте.

В случае, если вы пропустите это, библиотека Microsoft.AntiXss - это очень хороший инструмент, который будет в вашем распоряжении. В дополнение к более совершенной версии функции HtmlEncode, она также имеет полезные функции, такие как GetSafeHtmlFragment (), когда вы хотите включить ненадежный HTML в свой вывод и очистить его. Эта статья показывает правильное использование: http://msdn.microsoft.com/en-us/library/aa973813.aspx Статья старая, но все еще актуальна.

4 голосов
/ 02 августа 2011

Извините, Декстер, сайты ASP.NET 4 do требуют защиты XSS.Вы, вероятно, думаете, что встроенной проверки запросов достаточно, и хотя она отлично работает, она не защищена от ошибок.По-прежнему важно, чтобы вы проверяли все входные данные по белому списку приемлемых значений.

Другое дело, что проверка запроса полезна только для отражающей XSS, то есть XSS, встроенной в запрос.Это не поможет вам с постоянным XSS, поэтому, если у вас есть другие источники данных, где проверка входных данных не была столь строгой, вы рискуете.Поэтому вам всегда нужно кодировать свои выходные данные и для правильного контекста разметки (HTML, JavaScript, CSS). AntiXSS отлично подходит для этого.

Существует гораздо больше информации, особенно касающейся ASP.NET в OWASP Top 10 для разработчиков .NET, часть 2: Межсайтовый скриптинг (XSS) .

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