ame*_*eer 21
基本上,防伪标记会阻止任何人向您的网站提交由非实际用户生成的恶意脚本生成的请求.有一个仅HTTP的cookie(不是由浏览器中运行的脚本读取,但是由浏览器发送并且可由服务器访问)被发送到客户端,它用于生成隐藏的字段值,然后根据该值进行验证.曲奇饼.至少我认为这是一个过程.
这里有一个很好的描述,这正是你所询问的 https://blogs.msmvps.com/luisabreu/blog/2009/02/09/the-mvc-platform-the-new-anti-forgery-令牌/
小智 5
今天,我们来看一下Web应用程序中的一种安全漏洞,称为跨站点请求伪造或CSRF黑客。CSRF是XSS的鲜为人知的表弟。跨站点请求伪造是一种黑客类型,黑客利用它来利用用户对网站的信任。
执行此操作的简单方法是在ProductDetails后操作方法中使用ValidateAnitForgery令牌属性,如下所示
[HttpPost]
[Authorize(Roles = "Admins")]
[ValidateAntiForgeryToken()]
public ActionResult Edit(ProductDetails productdetails)
{
  if (ModelState.IsValid)
  {
    db.Entry(productdetails).State = EntityState.Modified;
    db.SaveChanges();
    return RedirectToAction("Index");
 }
 return View(productdetails);
}
为了在客户端生成AntiForgeryToken和Cookie,我们在Edit.cshtml中的HTML表单中按以下方式声明它
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
<fieldset>
    <legend>ProductDetails</legend>
…
这样可以确保发布到服务器的表单实际上是由同一服务器生成的。因此,来自正确服务器的不具有AntiForgeryToken的伪造表单将被拒绝。
也请参考这里的简单示例
https://github.com/devcurry/mvc101-anti-forgery-token
| 归档时间: | 
 | 
| 查看次数: | 22050 次 | 
| 最近记录: |