Почему был подтвержден запрос из ASP.net MVC? - PullRequest
5 голосов
/ 29 ноября 2008

В стандартных приложениях ASP.net ASP.net предлагал некоторую защиту от атак XSS с помощью метода validateRequest, который обнаруживал опасные ошибки ввода, если кто-то пытался это сделать. Эта функциональность, кажется, была исключена из MVC, почему?

Ответы [ 4 ]

7 голосов
/ 02 апреля 2009

Я знаю, что этот вопрос старый, но я подумал, что смогу на него ответить.

Существует атрибут фильтра действия ValidateInput, который можно добавить к действиям.

[ValidateInput(true)]
public ActionResult Foo()
{

}

Вы также можете использовать атрибут AllowHtml в свойствах модели

public class MyModel
{
    public Guid ID { get; set; }

    [AllowHtml]
    public string SomeStringValue { get; set; }
}
4 голосов
/ 29 ноября 2008

Это трудная линия для пересечения. Является ли ваше веб-приложение просто ресурсом RESTful, каким он должен быть? Или он пытается сделать больше. Следующее, что вы знаете, у вас есть 100 скрытых полей ввода: __VIEWSTATE, __EVENTTARGET, __EVENTARGUMENT и т. Д., И т. Д.

Как вы знаете, вы все равно можете предотвратить атаки XSS в MVC. Просто Google это , чтобы увидеть несколько примеров. Но причина в том, что MVC - это другой, более «чистый» тип веб-приложения.

РЕДАКТИРОВАТЬ: Я не знаю, ясно ли то, что я сказал выше. Но идея в том, что MVC не будет пытаться быть больше, чем он есть (как это делает ASP.NET). У них обоих есть свои сильные стороны и причины.

2 голосов
/ 29 ноября 2008

Надеюсь, у вас есть что-то более надежное, чем ValidateRequest, чтобы избежать XSS, в любом случае.

1 голос
/ 25 февраля 2009

Я считаю решение ValidateRequest взломанным. По моему мнению, отгонять XSS - это бизнес-правило; поэтому позвольте модели справиться с ситуацией.

Мне действительно нравится объяснение желания лучше следовать принципам REST. Что касается 100 скрытых полей, это напоминает мне решение ASP, которое я предоставил несколько лет назад; Я использовал множество скрытых полей для переноса метаданных. Не очень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...