【发布时间】:2016-10-09 19:10:08
【问题描述】:
我刚才试图通过提供防伪令牌来保护 post 方法免受侧面脚本的攻击,但注意到,在 .Net Core 中有另一个名为 AutoAntiForgeryToken 的属性。 XML cmets 和在线搜索没有提供关于这个新属性的太多信息。
任何关于新属性的帮助和描述,将不胜感激。
【问题讨论】:
标签: asp.net asp.net-core asp.net-core-mvc .net-core
我刚才试图通过提供防伪令牌来保护 post 方法免受侧面脚本的攻击,但注意到,在 .Net Core 中有另一个名为 AutoAntiForgeryToken 的属性。 XML cmets 和在线搜索没有提供关于这个新属性的太多信息。
任何关于新属性的帮助和描述,将不胜感激。
【问题讨论】:
标签: asp.net asp.net-core asp.net-core-mvc .net-core
来自AutoValidateAntiforgeryTokenAttributedocumentation:
用于验证所有防伪令牌的属性 不安全的 HTTP 方法。 HTTP 方法需要防伪令牌 除了 GET、HEAD、OPTIONS 和 TRACE。它可以作为一个应用 默认情况下触发防伪令牌验证的全局过滤器 申请。
AutoValidateAntiforgeryTokenAttribute 允许将防伪令牌验证全局应用于所有不安全的方法,例如POST, PUT, PATCH and DELETE。因此,您不需要为每个需要它的操作添加[ValidateAntiForgeryToken] 属性。
要使用它,请将以下代码添加到 Startup 类的 ConfigureServices 方法中
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});
如果您需要忽略防伪验证,您可以在操作中添加[IgnoreAntiforgeryToken] 属性。
【讨论】:
您有时可能会发现自己需要标记多个请求 控制器,同时要求一些请求不需要防伪,例如各种 基于 GET 的操作。 您可以使用多种工具来帮助该过程变得 让用户更加方便和舒适。 第一个是 AutoValidateAntiforgeryToken 属性。 它的行为类似于 ValidateAntiForgeryToken 属性;但是,它会自动忽略操作 使用以下方法调用:GET、HEAD、OPTIONS 和 TRACE,它们是 专为数据检索而设计。 这使您可以快速轻松地将防伪添加到 所有可以更改数据的方法,而不影响检索数据的方法。
以下代码是 AutoValidateAntiforgeryToken 属性的示例:
[AutoValidateAntiforgeryToken]
public class AntiForgeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(string userName)
{
return View("Index", userName);
}
[HttpDelete]
public IActionResult RemoveUser(string userName)
{
string url = string.Format("~/RemovedUser/{0}", userName);
return RedirectToAction("Account", "RemoveUser", "User");
}
}
在此示例中,正常的索引操作 (GET) 将不管来源如何工作,而 带有 POST 方法的 Index 操作和 RemoveUser 操作都是 DELETE 方法都需要客户端使用防伪令牌。
【讨论】: