Проверка запроса – предотвращение атак скриптов

Введение

Новая возможность версии 1.1 ASP.NET, проверка достоверности запроса, защищает сервер от поступления HTML некодированного содержимого. Это свойство разработано, чтобы помочь предотвращать некоторые script-injection атаки, посредством которых код клиентского скрипта или HTML может неосознанно быть представлен серверу, сохранен и затем передан другим пользователям. Мы настоятельно рекомендуем вам проверять достоверность всех входных данных и HTML, кодирующих их..
Например, вы создаете Web страницу, которая запрашивает адрес электронной почты пользователя и затем сохраняет его в базе данных. Если пользователь вводит alert(“hello from script”) вместо действительного адреса электронной почты, если содержимое не было правильно кодировано, этот скрипт может выполняться. Новая возможность проверки достоверности запроса ASP.NET 1.1 предупреждает возникновение такой ситуации.

Чем полезна эта возможность

Большинство сайтов не осознают, что они открыты атакам внедрения простых скриптов. Является ли целью этих атак повреждение сайта или потенциальное выполнение клиентского скрипта, чтобы перенаправить пользователя на хакерский сайт, атаки внедрения скрипта – это проблема, с которой должны бороться разработчики Web.

Атаки внедрения скрипта являются проблемой для всех разработчиков web, несмотря на то используют ли они ASP.NET, ASP или другие технологии web разработки.

Новая возможность проверки достоверности запроса ASP.NET 1.1 защищает от этих атак, не позволяя серверу обрабатывать некодированное HTML содержимое до тех пор, пока разработчик не решит разрешить это содержимое.
Чего ожидать: страница ошибки

Ниже, показан пример ASP.NET кода:

В результате выполнения этого кода появляется простая страница, которая дает вам возможность ввести некоторый текст в текстовом окне, нажать кнопку и отобразить текст в элементе управления label:

Однако в том месте, где должен быть введен текст, мы введем текст JavaScript, такой как

<script>alert("hello!")</script>


и получим исключительную ситуацию:

Сообщение об ошибке констатирует, что “было обнаружено потенциально опасное значение Request.Form …”, и обеспечивает более детальное описание того, что именно произошло и как изменить поведение. Например:

Проверка достоверности запроса определила потенциальное опасное значение ввода клиента и обработка запроса была отменена. Это значение может указывать на попытку подрыва безопасности вашего приложения. Устанавливая validateRequest=false в директиве Page или в секции конфигурации, вы можете отключить проверку достоверности запроса. Однако в этом случае вашему приложению настоятельно рекомендуется явно проверять все входные данные.

Выключение проверки достоверности запроса на странице


Чтобы выключить проверку достоверности запроса на странице вы должны присвоить атрибуту validateRequest директивы Page значение false:

<%@ Page validateRequest="false"  %>


Предупреждение: когда проверка достоверности запроса выключена, потенциально опасное содержимое может быть отослано на сервер; обеспечение того, что содержимое должным образом кодировано или обработано, является ответственностью разработчика страницы.


Выключение проверки достоверности запроса для вашего приложения


Чтобы выключить проверку достоверности запроса для вашего приложения, вы должны модифицировать или создать файл Web.config для вашего приложения и присвоить атрибуту validateRequest секции <PAGES /> значение false:

<configuration>     <system.web>         <pages validateRequest="false" />     </system.web> </configuration>

Если вы хотите выключить проверку достоверности запроса для вашего приложения на вашем сервере, вы можете внести это изменение в ваш файл Machine.config.
Предупреждение: когда проверка достоверности запроса выключена, потенциально опасное содержимое может быть отослано на сервер; обеспечение того, что содержимое должным образом кодировано или обработано, является ответственностью разработчика приложения.

В код, приведенный ниже, внесены изменения, проверка достоверности запроса выключена:

Теперь, если в текстовое окно будет введен такой JavaScript

<script>alert("hello!")</script>


результат будет следующий:

Чтобы этого не произошло, с выключенной проверкой достоверности запроса мы нуждаемся в HTML кодировании содержимого.

Как HTML кодировать содержимое

Если вы выключили проверку достоверности запроса, хорошей практикой является HTML кодирование содержимого. HTML кодирование автоматически заменит любой ‘’ (вместе с некоторыми другими символами) соответствующими HTML кодированными представлениями.

Содержимое может быть запросто HTML кодировано на сервере, используя Server.HtmlEncode(string) API. Содержимое также может быть легко HTML декодировано, т.е. возвращено к стандартному HTML, используя метод Server.HtmlDecode(string).

В результате:

Поделиться в соц. сетях

mailru Проверка запроса – предотвращение атак скриптов
facebook Проверка запроса – предотвращение атак скриптов
odnoklassniki Проверка запроса – предотвращение атак скриптов
livejournal Проверка запроса – предотвращение атак скриптов
googlebuzz Проверка запроса – предотвращение атак скриптов

Также рекомендуем:

  1. AJAX’овые грабли в Internet Explorer 6 Если передаваемый сервером заголовок с кодировкой не понятен IE, то возникает прекрасная, красноречивая Системная ошибка: -1072896658. IE приводит к нижнему регистру передаваемые custom-заголовки запросов, например X-Requested-With: XMLHttpRequest превращается на сервере в x-requested-with: xmlhttprequest). Нафига? Internet Explorer иногда не кеширует фоновые изображения, полученные через AJAX; повторно загружаемый фон «забывает» посмотреть в кеше. IE некорректно парсит js-код [...]...
  2. GlassBox Описание Недавно обнаружили весьма интересную javascript библиотеку Glassbox.С ее помощью можно создавать прозрачные рамки, цветные полупрозрачные слои и различные визуальные эффекты, такие как плавное появление и исчезновение слоев.. Эта библиотека весьма компактна и включает в себя библиотеки Prototype и Script.aculo.us. К основным плюсам библиотеки можно отнести: * Легкость использования; * Кроссбраузерность (Работает в IE6+ , [...]...
  3. Отказ в обслуживании в Microsoft Internet Explorer Программа: Microsoft Internet Explorer 6.x Опасность: Средняя Наличие эксплоита: Да . Описание: Уязвимость позволяет удаленному пользователю вызвать отказ в обслуживании. Уязвимость существует в библиотеке mshtml.dll при обработке тега OBJECT. Удаленный пользователь может с помощью специально сформированной Web страницы вызвать отказ в обслуживании браузера. Примеры: http://lcamtuf.coredump.cx/iedie2-1.htmlhttp://lcamtuf.coredump.cx/iedie2-2.htmlhttp://lcamtuf.coredump.cx/iedie2-3.htmlhttp://lcamtuf.coredump.cx/iedie2-4.html URL производителя: www.microsoft.com Решение: Способов устранения уязвимости не существует в [...]...
  4. PHP и формы Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.. Обработка простых форм посредством PHP не представляет никакого труда. Однако время от времени возникает потребность обработать форму, содержащую несколько однотипных [...]...
  5. Перекрывание селектов в IE6 Даже через абсолютно спозиционированные ДИВ-ы с максимальным zIndex-ом в ИЕ6 «проглядывают» селекты. Задача: подобрать HTML/CSS-способы перекрывания селектов.. Реализация селектов в браузере Internet Explorer 6 такова, что перекрыть их обычными блочными элементами (ДИВ-ы, таблицы) даже при максимальном zIndex-е у последних не получится. Выглядит этот эффект вот так (у ДИВа z-index:10000): Экспериментальным путем было выявлено, что единственный [...]...
  6. Кросс-доменный Ajax в jQuery Ajax запросы на сторонние вебсайты, как правило, невозможны из-за ограничений безопасности. Но есть несколько методов обхода данных ограничений.Узнайте подробнее о них, вы можете из этого небольшого руководства.. JSONP С помощью «JSON with padding» вы можете получать JSON данные со стороннего сервера при помощи тега <script>. Подробнее об этом вы можете узнать из Википедии. Это позволяет [...]...
  7. Как зашифровать HTML-код веб-страницы У начинающих веб-мастеров частенько возникает желание хоть как-то защитить свою интеллектуальную собственность от посягательств других недобросовестных интернет-пользователей, стремящихся «урвать» себе лакомый кусочек чужого кода веб-страницы и в дальнейшем использовать его у себя на сайте.. Именно для таких веб-мастеров компания MoonLight Software выпустила утилиту WebCrypt Pro, которая превратит читабельный и понятный всем HTML-код вашей странички в [...]...
  8. Построение дерева иерархии с помощью PHP / MySQL Рассмотрим пример построения дерева иерархии (в развернутом виде) на основе информации из базы данных с помощью PHP и MySQL. Ключ к решению данной задачи – использование рекурсивной функции. Иерархия разделов будет храниться в таблице базы данных MySQL. . Ниже на скриншоте показана данная таблица (catalogue): id – первичный ключ таблицы pid – id родительского раздела [...]...
  9. Статистика сайта – ответы на вопросы и не только… Статистика веб-сайта родилась из вопросов. Все начинается с этого.. Интересно, как увеличить продажи? Совсем коротко о главном. Человек сидит за компьютером и с помощью браузера просматривает веб-сайт. Сайт состоит из файлов. Интересно, какие файлы просматривают чаще? И кто их просматривает? Чуть подробнее о предмете. Веб-сайт состоит из совокупности файлов – гипертекстовых документов, картинок оформления, данных. [...]...
  10. Ловушка для спам-бота Многие спам-боты, чтобы скрыть свои реальные имена (названия), которые легко отследить по записи user_agent, изменяют эту запись, меняя её на записи разных браузеров (например: «mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)» и так далее). Также эти боты игнорируют стандарты записей для файла robots.txt (описание стандарта Вы можете прочесть здесь http://www.robotstxt.org/wc/exclusion.html robots.txt standard).. Можно, конечно, пойти [...]...
  11. Как создать 1000 статей за полчаса 1. Качайте SEO Generator2. Пройдите режим обучения программы 3. Работаете со статьей также как с длиным описанием4. Генерируете статью в файлыПодсказка: используйте для отладки фишку: если строка начинаеться с символа #, то эта строка и последующие не будут генериться.Не переусердствуйте с синтаксисом не мучайте программу и свой мозг.Качаете SEO Generator http://www.altalabs.ru/files/SEOGENDEMO.rar. Так-же будет полезна прога [...]...
  12. Семантическая сеть, основанная на микроформатах . Многие разработчики наслышаны о концепции «семантическая сеть» пропагандируемой консорциумом W3C и лично Тимом Бернерс-Ли (носящим титул «Отец WWW»). Несмотря на детальную проработку концепции, ее продвижение идет с большим скрипом, по крайней мере, в потребительском сегменте интернета. Составляющими частями семантической сети являются, в частности, форматы RDF, XML, OWL. С их помощью можно детально описать смысл [...]...
  13. Использование шаблонов при программировании WEB-приложений ЗАЧЕМ ВООБЩЕ ИСПОЛЬЗОВАТЬ ШАБЛОНЫ? Может, кто-то скажет, а зачем выносить HTML код в отдельный файл если его можно спокойно писать в скрипте? Да конечно в скрипте можно писать HTML код, но просмотреть полностью «собранную», или частично «собранную» страницу которую выводит скрипт, возможно только при его нормальной работе, а во время отладки скрипта, как правило, возникают [...]...
  14. Подсвечивание кода с помощью jQuery и Chili В этом руководстве мы научимся подсвечивать исходный код с помощью плагина Chili для jQuery. Мы узнаем, как видоизменять Chili для повышения читаемости и удобства использования подсветки в собственных функциях.. [Демо] [Исходный код] Введение В первом руководстве вы узнаете, как подсвечивать исходный код с помощью плагина jQuery Chili. И это не очередная быстрая справка по Chili: [...]...
  15. Пример создания многоязыкового приложения (XML) Введение Вопрос разработки многоязычного web – приложения (сайта) или приложения с поддержкой интерфейса пользователя на разных языках, поднимается довольно часто. Если еще пару лет назад данная задача была не так актуальна, то сейчас подобная функциональность де – факто стала одним из требований заказчика при создании web – ориентированного приложения.. Формулировка задачи Целью данной работы является [...]...

Комментарии запрещены.