В настоящее время мы имеем дело с некоторыми проблемами XSS в одном из наших проектов ASP.NET MVC.Я обнаружил две проблемы - первая связана с нашим шаблоном проверки запросов.Теперь злоумышленник может использовать эту дыру в безопасности, чтобы удалить плохой контент в нашей базе данных.
Вторая проблема заключается в том, как мы отображаем этот контент и используем метод Html.DisplayTextFor, и он кажется «сломанным».
Просто создайте новое веб-приложение MVC 3, поместите его вHomeController:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">";
User foo = new User();
foo.Name = "<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">";
return View(bla);
}
public ActionResult About()
{
return View();
}
}
public class User
{
public string Name { get; set; }
}
Представление:
@Html.TextBoxFor(m => m.Name) <br/> ||| <-- will be encoded
@Html.Encode(ViewBag.Message)<br/> ||| <-- will be double encoded
@Model.Name <br/> ||| <-- will be encoded
@Html.DisplayTextFor(m => m.Name) <-- no encoding
<br/> |||
Выводом DisplayTextFor будет вся строка <script xss="" src="htpp://ha.ckers.org/css.js">
Вопрос: ошибка, функция или янеправильно?