| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: .NET Framework :: Учебник по ASP.NET :: Советы :: Защита от Cross-Site Scripting атаки в ASP.NET
Защита от Cross-Site Scripting атаки в ASP.NET
Небольшой набор правил, соблюдая которые возможность XSS атаки на ваш
сайт сведется к минимуму. Цель Cross-Site-Scripting атаки - выполнение
клиентского кода в пределах вашего web-приложения. Статья эта относится
именно к ASP.NET, другие платформы и языки имеют другие возможности. Два главных правила:
Фильтрация входящих данных – любые данные от клиента
это опасные данные, они должны быть проверены и обработаны. Это можно
делать через RegularExpressionValidator и RangeValidator,
в более сложных ситуациях подойдут регулярные выражения на стороне
сервера(System.Text.RegularExpressions.Regex).
Обработка исходящих данных – Используйте
HttpUtility.HtmlEncode для кодирования содержимого при отображении,
которое получено от пользователя или из базы данных.
И так, на что стоит обратит внимание:
По умолчанию request validation включен в файле Machine.config. Эту
настройку также можно изменить через Web.config или на самой странице.
Например, код такого вида Response.Write(Request.Form["name"]);
передает клиенту не обработанные параметры из HTTP запроса, это не
безопасно. Атакующий сможет передать в параметре, например, вот такой
код: <script>alert('hello');</script> который выполнится у
клиента.
Если данные которые вы отображаете созданы пользователем(например
комментарии в блоге), при отображении надо воспользоваться методом
HttpUtility.HtmlEncode() который заменяет все специальные
символы(<, > и т.д.).
Аналогично HTML, кодируются URL строки полученные от пользователя
методом HttpUtility.UrlEncode
Если ваша ASP.NET страница с богатым функционалом принимает от
пользователя данные с HTML, например, есть возможность использовать HTML
форматирования, приходится отключать request validation. В таком случае
стоит фильтровать все HTML тэги кроме пары базовых, типа <b> и
<i>, на стороне сервера. Пример кода:
StringBuilder sb = new StringBuilder( HttpUtility.HtmlEncode(htmlInputTxt.Text));
sb.Replace("<b>", "<b>");
sb.Replace("</b>", "</b>");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "</i>");
Автор: http://web2skill.com/ Рубрика: Советы
VivaMP - инструмент для OpenMP.
Инструмент для программистов VivaMP предназначен для помощи разработчикам параллельных программ на базе OpenMP. В статье приведен краткий обзор программного продукта.
Подробнее... |
Рубрика: OpenMP
| Добавлено: 05.12.2008
Создаем контекстно-зависимое WPF-приложени....
Подробнее... |
Рубрика: Windows 7
| Добавлено: 05.12.2008
Windows Vista SP2: что внутри и что важно?.
Подробнее... |
Рубрика: Windows Vista
| Добавлено: 05.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|