Подтвердить что ты не робот

Как избежать уязвимостей XSS в ASP.Net(MVC)?

Недавно я заметил, что у меня была большая дыра в моем приложении, потому что я сделал что-то вроде:

<input type="text" value="<%= value%>" />

Я знаю, что я должен был использовать Html.Encode, но есть ли способ сделать это для всех значений, не делая этого явно?

4b9b3361

Ответ 1

Есть несколько способов:

  • Используйте синтаксис <%: %> в ASP.NET MVC2/.NET 4.0. (Это всего лишь синтаксический сахар для Html.Encode())
  • Следуйте инструкциям изложенным Филом Хааком, где подробно описывается использование библиотеки Anti-XSS в качестве механизма кодирования по умолчанию для ASP.NET.

Ответ 2

Смотрите этот видео от Скотта Гензельмана и Фила Хаака. Они охватывают XSS, CSRF, JSON Hijacking специально с ASP.Net MVC.

Ответ 3

В ASP.Net 4.0 или новее всегда используйте <%:...% > вместо <% =...% > ... он кодирует HTML.

объяснение Скотта.

Сделав это, довольно просто выполнить grep ваш код для <% = регулярно в качестве меры предосторожности.

Кроме того, используете ли вы Microsoft Anti-XSS library?

Ответ 4

Синтаксис для кодирования HTML

  • <%: model.something% > синтаксис в WebForms

  • Автоматически в Razor i.e. @model.something автоматически будет автоматически кодироваться no нужно что-то сделать для кодирования.

  • Методы MVC3 HTML Helper автоматически возвращают закодированную строку. например Html.Label вернет закодированную строку

Подробнее о скриптах с несколькими сайтами

http://thirum.wordpress.com/2013/10/24/how-asp-net-mvc-prevents-cross-site-scriptingxss-attack/

Ответ 5

Потенциально опасные HTML-теги:

Не являясь исчерпывающим списком, следующие широко используемые теги HTML могут позволить злоумышленнику вводить код script:

<applet>
<body>
<embed>
<frame>
<script>
<frameset>
<html>
<iframe>
<img>
<style>
<layer>
<link>
<ilayer>
<meta>
<object>

Злоумышленник может использовать атрибуты HTML, такие как src, lowsrc, style и href, в сочетании с предыдущими тегами для внедрения межсайтового скриптинга. Например, атрибут src тега может быть источником инъекции, как показано в следующих примерах.

<img src="javascript:alert('hello');">
<img src="java&#010;script:alert('hello');">
<img src="java&#X0A;script:alert('hello');">

Злоумышленник также может использовать тег для ввода script, изменив тип MIME, как показано ниже.

<style TYPE="text/javascript">
  alert('hello');
</style>