2016-11-28 15 views
1

Я обновил приложение от Asp.Net 3.5 до Asp.Net 4.5. Я видел много сообщений о преимуществах использования библиотеки AntiXSS. Пока я не видел, как это можно использовать.Как использовать библиотеку AntiXSS в ASP.NET 4.5

Он предложил позволило ему в web.config, как это:

<httpRuntime ... 
     encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, 
     Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

Я хотел бы знать, является ли позволяет библиотеку в web.config единственное, что мне нужно сделать, или должны также encode входные значения от TextBoxes?

Спасибо за помощь

EDIT

Скажем, у меня есть текстовое поле, как это:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 

Должен ли я кодировать входной сигнал в отделенного кода:

string value = SomeEncodeMethod(TextBox1.Text) 

Нужно ли это делать?

+1

Я вроде как в подобной лодке, кажется http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx/ is лучшее, что я могу найти – Perpetualcoder

+0

Спасибо за ссылку. Похоже, что Фил Хаак только что создал класс, но я не видел, где он закодировал любое значение, поступающее из элемента управления ввода. Я не знаю, должен ли я предположить, что единственное, что нужно сделать, это включить библиотеку в web.config, потому что теперь она является частью структуры asp.net. – Richard77

+0

Выделите простой POC, конфигурация, которую вы сделали, должна работать. Я попробую сам, когда вернусь к этой задаче. Удачи! – Perpetualcoder

ответ

0

Razor в .NET MVC (а также тег <%: в aspx) автоматически кодирует значения в контексте html. Это означает, что когда вы сделаете @myVar в cshtml с Razor, любые < станут &lt;, " станет &quote; и так далее. Но по умолчанию он использует черный список и кодирует только несколько символов, оставляет все остальное в одиночестве.

Если вы переключитесь на AntiXSS, как описано в вашем вопросе, этот кодер по умолчанию будет изменен на AntiXSS. Основное преимущество заключается в том, что AntiXSS является кодовым списком белого списка, он имеет список из нескольких символов, которые в порядке, чтобы их оставили в покое (буквы и цифры, в основном), и все остальное закодировано. Это немного более безопасно и может помешать некоторым атакам, которые в противном случае были бы возможны.

Вы должны знать, что этого кодирования не всегда достаточно. Чтобы предотвратить XSS, вам нужно выбрать правильную кодировку для правильного контекста. Для контекста html (а также для значений атрибутов html, в основном) кодировка по умолчанию одобрена. Тем не менее, это не ok для контекста Javascript. Например, это уязвимо для XSS в cshtml либо с по умолчанию или AntiXss HTML кодер:

<script> 
    var [email protected]; 
</script> 

Чтобы сделать это безопасно, вы должны кодировать его в контекст Javascript с JavaScriptEncode() в AntiXss и положить его между котировками ('). Обратите внимание, что без кавычек он все еще уязвим для XSS.

+0

Эй @ Gabor Lengyel. Спасибо вам за понимание.Итак, в нижней строке, вы предлагаете по-прежнему кодировать значение текстового поля в aspx-файле. Это в основном мое беспокойство. Посмотрите Edit. – Richard77

+0

А, ок. Вы не нуждаетесь в дальнейшей кодировке, asp: TextBox позаботится об этом по умолчанию. Вы можете попробовать это, введя в текстовое поле такие вещи, как '

 Смежные вопросы

  • Нет связанных вопросов^_^