Безопасность прежде всего.
Лучшие практики MVC рекомендуют добавлять атрибут [ValidateAntiForgeryToken]
к каждому действию [HttpPost]
.
Как я могу применить это правило в одной уникальной точке приложения?
Безопасность прежде всего.
Лучшие практики MVC рекомендуют добавлять атрибут [ValidateAntiForgeryToken]
к каждому действию [HttpPost]
.
Как я могу применить это правило в одной уникальной точке приложения?
Следующий класс позволяет сделать это с помощью FilterProvider.
public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
{
List<Filter> result = new List<Filter>();
string incomingVerb = controllerContext.HttpContext.Request.HttpMethod;
if (String.Equals(incomingVerb, "POST", StringComparison.OrdinalIgnoreCase))
{
result.Add(new Filter(new ValidateAntiForgeryTokenAttribute(), FilterScope.Global, null));
}
return result;
}
Чтобы использовать вышеуказанный класс, добавьте это к методу RegisterGlobalFilters
в файле global.asx
:
...
FilterProviders.Providers.Add(new AntiForgeryTokenFilterProvider ());
..
При этом каждый [HttpPost]
будет проверять, находится ли Html.AntiForgeryToken()
в представлении.