#c# #jquery #asp.net #antixsslibrary
#c# #jquery #asp.net #библиотека antixssslary
Вопрос:
Я хочу использовать библиотечную функцию AntiXSS в моем веб-приложении. У меня есть веб-приложение, которое содержит asp.net страницы с кодом Jquery в code behind. Весь asp.net страницы выполняются через Jquery js pages. Я хочу применить функцию кодирования к некоторым полям, но проблема в том, как применить и где применить кодировку — (На странице jquery, где задать значение для отображения в окне вывода 0r в коде на стороне сервера, где вызывается get data API в файлах cs.) И какую функцию использовать в этих сценариях (HtmlEncode, JavascriptEncode и т.д.)
Заранее спасибо
Ответ №1:
Основная идея предотвращения XSS-атак заключается в том, что все входные данные (от пользователя или, скажем, внешнего приложения) должны рассматриваться как ненадежные и, следовательно, должны быть либо проверены при принятии, и / или закодированы при воспроизведении в выходных данных (html, js и т.д.).
AFAIK, AntiXss
это библиотека на стороне сервера, поэтому вы не можете использовать ее для кодирования значений в браузере. Вы должны применить кодировку (к html / html attribute / JS и т.д.) На стороне сервера, Прежде чем отправлять эти значения клиенту (например, на странице aspx или в службах asmx / SCF, которые отправляют данные клиенту, где java-script будет обрабатывать данные как html или скрипт).
Смотрите эту статью — хотя она устарела, это все еще хороший ресурс для начала с AntiXSS lib, и в ней также перечислены сценарии использования различных методов кодирования в разделе «Определение используемого метода кодирования»
Комментарии:
1. Должны ли мы перейти к кодированию полей во время ввода? При сохранении вызывается API, и мы вставляем значения в базу данных. Каково влияние этого вместо того, чтобы делать это во время вывода?
2. @Girish, при типичном подходе вы можете проверять входные данные (и отклонять при необходимости). Да, вы можете выбрать его кодирование, поэтому тогда вся ваша кодовая база должна предполагать, что любое значение, существующее в базе данных, не является необработанным , а закодировано. Иногда это может быть громоздким — например, предположим, что вы принимаете математические выражения (скажем,
a > b
), теперь, когда они отображаются как html-литерал, вам нужно их закодировать, но для их синтаксического анализа или назначения текстовому полю для редактирования вы хотите, чтобы все было как есть. Итак, если в вашей базе данных есть закодированный ввод, вам придется его декодировать для этих сценариев.3. @vinayc У меня есть существующее приложение в asp.net 4.0 Я скачал и установил то же самое. Нужно ли мне кодировать каждый запрос и ответ. Или я могу установить его в качестве кодировки по умолчанию для моего приложения.