Как избежать межузловых сценарных безопасности

Переводы статьи Переводы статьи
Код статьи: 252985 - Vizualiza?i produsele pentru care se aplic? acest articol.
Внимание
В данной статье относится к Windows 2000. Поддержка Windows 2000 заканчивается на 13 июля 2010 г. В Центр решений-технической поддержки Windows 2000 является отправной точкой для планирования стратегии перехода от Windows 2000. Для получения дополнительных сведений см. Политики поддержи продуктов Майкрософт.
Развернуть все | Свернуть все

В этой статье

Аннотация

Динамически создаваемые страницы HTML могут создавать угрозу безопасности, если входные данные не проверяются на пути в или на выход. Можно внедрить вредоносный сценарий в входные данные, отправленные на веб-страницы и отображаются в обозреватели как исходить из доверенного источника. Эта проблема упоминается как уязвимость межузловых сценариев. В этой статье обсуждаются межузловых сценарных безопасности, возможные последствия и предотвращение.

Дополнительная информация

Проблема

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

Возможные последствия

Если входные данные для динамических веб-страниц не проверяется, могут возникнуть следующие проблемы:
  • Может быть нарушена целостность данных.
  • Файлы cookie могут быть установлены и чтение.
  • Вводимые пользователем данные могут быть перехвачены.
  • Вредоносные сценарии могут быть выполнены клиентом в контексте надежного источника.
Какие веб-страницы подвергаются риску? По существу проблема создания динамической страницы на основе введенных данных, который не был проверен. Типичные примеры включают следующие типы веб-страниц:
  • Поисковые системы, которые возвращают результаты страниц на основе ввода пользователя.
  • Страницы входа, хранящие учетные записи пользователей баз данных, файлы «cookie» и т. д. и позже выписать имя пользователя для клиента.
  • Веб-форм, которые обрабатывают сведения о кредитной карте.

Предотвращение

В этом разделе представлены несколько подходов к запрещению межузловых атак сценариев безопасности. Оценка вашей конкретной ситуации, чтобы определить, какие технологии наиболее удобное для вас. Важно отметить все методами, при проверке данных, полученные из входных данных и не в доверенном сценарии. По существу Предотвращение означает следовать хорошей практикой кодирования, запустив призваны проверки вводимых данных для вашей программы.

В следующем списке представлены общие подходы для предотвращения атак с применением межузловых сценариев:
  • Кодирование вывода в зависимости от входных параметров.
  • Фильтрация входных параметров для специальных символов.
  • Фильтр вывода на основе входных параметров для специальных символов.
При фильтрации или кодирования, необходимо указать набор символов для веб-страниц обеспечить фильтра выполняет поиск соответствующих специальных символов. Данные, вставленные в веб-страницы следует отфильтровать последовательности байтов, считающиеся специальными в зависимости от заданного набора знаков. Популярные charset является ISO 8859-1, которое было в ранних версиях HTML и HTTP по умолчанию. При изменении этих параметров, необходимо учитывать вопросы учетной записи.

Кодирование вывода в зависимости от входных параметров для специальных символов

Кодировать данные, полученные как входные данные при записи его как HTML. Это методика действует на данных, который не был проверен по некоторым причинам, во время ввода. С помощью методов, таких как URLEncode и HTMLEncode, можно избежать выполнения вредоносного сценария.

В следующих фрагментах кода демонстрируется использование URLEncode и HTMLEncode из страниц Active Server Pages (ASP):
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
Если кодирование HTML и URL-адреса, необходимо указать кодовую страницу как Вы как будто для фильтрации данных.

Следует отметить, что вызов HTMLEncode на строку, которая будет отображаться не позволит любой сценарий в его выполнение и тем самым предотвращает проблемы.

Фильтрация входных параметров для специальных символов

Фильтрация входных данных работает, удаляя все или некоторые специальные символы из входных данных. Специальные символы — это символы, позволяющие сценарий, созданный в потоке HTML. Следующие специальные символы:
< > " ' % ; ) ( & + -
				
Следует иметь в виду, отдельные ситуации может потребовать фильтрации дополнительных символов или строк за пределами специальных символов.

Фильтрация может быть эффективной техникой, есть несколько моментов:
  • Фильтрация может не подходить для некоторых входных данных. Например, в сценариях, где получение <text> ввод из HTML-формы, можно вместо этого выбрать метод кодирования (см. ниже).</text>
  • Некоторые знаки, отфильтрованные фактически может быть необходимые входные данные для сценария на стороне сервера.
Следующий фильтр примере, написанном на языке JavaScript, демонстрируется удаление специальных символов:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
Следующий код обрабатывает вводимые пользователем данные перед их передачей для последующего использования.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

Выходной фильтр, в зависимости от входных параметров для специальных символов

Эта методика аналогична фильтрации ввода, за исключением того, что фильтр символов, которые записываются в клиент. Хотя это может быть эффективной техникой, он может представлять проблема для веб-страниц, которые записывают HTML-элементов.

Например на странице, которая считывает<table>элементы, универсальная функция, удаляющая специальных символов будет убрать < and=""> символов, которые ruins<table>тег. Таким образом чтобы этот метод полезен, вы бы фильтровать только данные, передаваемые или данные, ранее введенные пользователем и сохраняются в базе данных.</table></table>

Возможные источники вредоносных данных

Хотя проблема относится к любой страницы, динамически использует входные данные генерировать HTML, ниже приведены некоторые возможные источники вредоносных данных для проверки плашечных для потенциальной угрозы безопасности:
  • Строка запроса
  • Файлы «cookie»
  • Переданные данные
  • URL-адреса и части URL-адреса, такие как PATH_INFO
  • Данные, полученные из пользователей, сохраняется в каком-либо смысле, таких как в базе данных

Заключение

В заключение, ниже представлены ключевых моментов, относительно межузловых сценариев проблемы безопасности:
  • Эта проблема создания динамической страницы на основе введенных данных, который не был проверен.
  • Подавление проверочной на входные данные могут иметь последствия для безопасности неожиданным. Проблема предотвращены через хорошие разработки таких стандартов проверки входных данных.
  • Необходимо оценить решения для каждого узла, страницы и даже основы поле и метод, имеет смысл использовать.

Ссылки

Дополнительные сведения содержатся в следующих рекомендациях от компьютера аварийного ответ группы (CERT) университета Карнеги-Меллона.
http://www.CERT.org/advisories/CA-2000-02.HTML
Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
253117Предотвращение Internet Explorer и Outlook Express межузловых сценарных безопасности
253119 Как проверить код ASP уязвимости на рынке Комплексного
253120 Процедура просмотра Visual InterDev созданный код уязвимости на рынке Комплексного
253121 Как проверить код MTS/ASP уязвимости на рынке Комплексного

Свойства

Код статьи: 252985 - Последний отзыв: 5 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • операционная система Microsoft Windows 2000 Server
Ключевые слова: 
kbcodesnippet kbcssi kbhowto kbsecurity kbmt KB252985 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:252985

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com