如何使用csrf令牌asp c#?

如何使用csrf令牌asp c#?

问题描述:

我已经开始使用asp mvc 3,然后使用c#和剃须刀。我想使用带有安全性的表单发送请求POST。如何使用csrf令牌asp c#?

我想用剃刀呈现一些像

<form action="/sass/" method="post"> 
    @using (Html.BeginForm()) { 
     @Html.AntiForgeryToken() 
     <div class="form-group"> 
      <label>Ingresa tu Nombre</label> 
      <input class="form-control" name="nombre" /> 
     </div> 
     <div class="form-group"> 
      <input type="submit" value="Enviar mi duda" class="btn btn-primary btn-sm" /> 
     </div> 
    } 

而在C#我不知道如何来验证CSRF令牌,是有效的。我使用C#,asp mvc3和剃须刀。

请帮帮我!

在您的操作方法中,您需要添加相应的属性[ValidateAntiForgeryToken],并验证您的输入。

+0

如果这个答案是对您有用,请接受它。 – 2014-12-18 20:49:35

您的代码状态有问题。有两种嵌入式格式:外部格式和由Html.BeginForm生成的格式。但是,验证令牌的方法是用[ValidateAntiForgeryToken]修饰目标操作或控制器。

因此,要么:

[ValidateAntiForgeryToken] 
public ActionResult Index() 
{ 
    return View(); 
} 

或验证所有方法控制器:

[ValidateAntiForgeryToken] 
public class MyController : Controller 
{ 
} 
+0

如何我应该把我的表单与自由参数,所以:

。它使用Html.BeginForm() – ray 2014-11-14 14:29:38
+0

@ray,最简单的解决方案是删除'using(Html.BeginForm)'...... – Candide 2014-11-14 14:34:17

+0

正如我今天所了解的,AntiForgeryToken和CsrfToken之间有所不同。 Csrf比AntiForgery更具限制性。但属性仍然是一条路。 – Tobias 2014-11-14 18:59:53