| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: .NET Framework :: Учебник по ASP.NET :: Советы :: Microsoft Anti-Cross Site Scripting Library еще один способ защиты от XSS-атак
Microsoft Anti-Cross Site Scripting Library еще один способ защиты от XSS-атак
Атаки XSS (cross-site scripting) на веб-ресурсы не зависят от платформы, среды разработки, веб-сервера или языка программирования. Основа успеха при этой атаки смешивание кода и данных, когда на сайте данные контента формируются в коде, как, например, в следующем примере: Небольшое введение.Атаки XSS (cross-site scripting) на веб-ресурсы не зависят от платформы, среды разработки, веб-сервера или языка программирования. Основа успеха при этой атаки смешивание кода и данных, когда на сайте данные контента формируются в коде, как, например, в следующем примере: Label1.Text = userName; С виду все хорошо, но до той поры пока пользователь при регистрации в поле имени не введет строку типа: <script>alert('attack!');</script> Хорошо, что asp.net обладает защитой по умолчанию и проверяет любой запрос на наличие опасных значений. Если на странице не вставить параметр ValidateRequest="false", то шансов вбить в поле ввода опасное значение у злоумышленника практически не будет. Частенько требуется позволить пользователю передавать на сервер данные с тэгами или html-фрагменты. В таком случае параметр ValidateRequest отключают и безопасность ресурса попадает под удар. Скажем, имеем такой код:
Злоумышленник вполне может послать такой запрос незащищенной странице:
При выключенной проверке на безопасность строки запроса asp.net пропустит такую строку и в результате элемент управления выведет в странице небезопасную строку: <script>x=document.cookie;alert(x);</script> Стандартные способы защиты.В asp.net есть несколько статических методов для предотвращения XSS-атак, все они объединены в класс HttpUtility: - HtmlEncode – кодирует строку в безопасную для размещения на странице; - HtmlAttributeEncode – кодирует строку в безопасную для размещения на странице, но не обрабатывает целый массив символов, например не конвертирует “>” в > - UrlEncode – кодирует строку url в безопасную, заменяя опасные символы на коды, например «<» и «>» кодируются как «%3c» и «%3e». Я не стану расписывать что и как делают эти методы, а перейду сразу к причине написания статьи. Библиотека Microsoft Anti-Cross Site Scripting Library.Микрософт в рамках проекта Sandbox предлагает альтернативный подход к защите от XSS-атак. Библиотека Anti-Cross Site Scripting Library (далее AntiXSS) предлагает следующие методы: - HtmlEncode, HtmlAttributeEncode и UrlEncode – повторяют функционал методов HttpUtility; - JavaScriptEncode – кодирует строку с блоком javascript-кода; - VisualBasicScriptEncode кодирует строку с блоком vbscript-кода; - XmlEncode - кодирует строку для использования в XML; - XmlAttributeEncode - кодирует строку для использования в XML-атрибутах; В чем же отличие данного решения от стандартного? На странице проекта в разделе FAQ различие описывается так: «Библиотека Microsoft Anti-Cross Site Scripting Library отличается от этих методов тем, что использует принцип техники включения, который первым делом определяет набор допустимых символов, отличные от которого автоматически кодируются». В документации к проекту можно узнать набор символов, которые не кодируются: - a-z, A-Z; - 0-9; - запятая, точка, дефис, подчеркивание; - пробел кодируется всеми функциями кроме следующих: HtmlAttributeEncode, UrlEncode, XmlAttributeEncode. Все остальные символы подлежат кодированию. Причем, если методы HttpUtility кодируют симовол «<» в <, то AntiXSS кодирует «<» в «<». Точно так же дела обстоят с кавычками, амперсантом и другими символами. Данный подход в чем-то является избыточным, но в вопросах безопасности в наше время избыточность порой даже приветствуется. И если большинство пользователей вполне довольны стандартным инструментом HttpUtility, то крупные компании или веб-ресурсы оперирующие секретными данными вполне могут перейти на AntiXSS для обеспечения максимальной защиты в таком вопросе как XSS-атаки. Вопросы производительности.Избыточность безопасности – это конечно хорошо, но как обстоит дело с производительностью? Проверим производительность самым простым способом:
Результаты не радуют: - Если присвоить attack сложную строку типа
то результаты будут такими: HttpUtility -00:00:00.4143216 AntiXSS -
00:00:05.8486560;- Если attack присвоить строку попроще
, то результаты 00:00:01.5328896 в случае использования AntiXSS и
00:00:00.0351120 в случае с HttpUtility.- Если attack присвоить просто
, то результаты будут такими: HttpUtility = 00:00:00.1976304 и AntiXSS =
00:00:02.8270176;- В самом простейшем случае attack =
HttpUtility = 00:00:00.1123584 AntiXSS = 00:00:00.4353888.Как видно, отрыв очень велик и, как ожидалось, избыточность безопасности достигается в ущерб производительности. Выводы.Microsoft Anti-Cross Site Scripting Library предлагает функционал для предотвращения XSS-атак, который по сравнению с HttpUtility предлагает изыбточную безопасность. Вместе с тем, методы AntiXSS работают заметно медленнее своих собратьев и использовать их имеет смысл только там, где ставятся повышенные требования к безопасности. Источник: http://habrahabr.ru/a> Рубрика: Советы
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|