Как избежать XSS-уязвимостей в ASP.Net (MVC)? - PullRequest
19 голосов
/ 08 июля 2010

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

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

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

Ответы [ 5 ]

22 голосов
/ 08 июля 2010

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

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

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

7 голосов
/ 08 июля 2010

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

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

Сделав это, довольно просто регулярно выполнять поиск кода для <% = в качестве меры безопасности. </p>

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

2 голосов
/ 25 октября 2013

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

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

  2. Это автоматически в Razor, т. Е. @Model.something автоматически закодирует, не нужно ничего делать для кодирования.

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

Подробнее о межсайтовом скриптинге

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

1 голос
/ 28 августа 2015

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

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

<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');">

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

<style TYPE="text/javascript">
  alert('hello');
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...