ajax防止csrf攻击,ASP.NET MVC ajax提交 防止CSRF攻击

该博客详细介绍了如何在 ASP.NET MVC 中使用 @functions 块生成请求验证令牌,并在 AJAX 请求中设置请求头。作者还自定义了一个过滤器 `MyValidateAntiForgeryToken` 来验证请求头中的令牌,确保 POST 请求的安全性,防止跨站请求伪造(CSRF)攻击。同时,文章展示了如何在控制器的 Action 方法上应用这个过滤器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//在View中

@functions{

public string ToKenHeaderValue()

{

string cookieToken,fromToken;

AntiForgery.GetTokens(null,out cookieToken,out fromToken);

return cookieToken+":"+fromToken;

}

}

$function({

......

$.ajax("api/Value",{

data:{...},

type:‘post‘,

dataType:‘json‘,

headers:{‘RequestVerificationToKen‘:[email protected]()‘},

success:fucntion(data){....}

})

})

//自己写的过滤器

public class MyValidateAntiForgeryToKenAttribute:FileterAttribute,IAuthorizationFilter

{

private void ValidateRequestHeader(HttpRequestBase request)

{

string cookieToKen="";

string fromToKen="";

string tokenValue=request.Header["RequestVerificationToKen"];

if(!string.IsNullOrEmpty(tokenValue))

{

string[] tokens=tokenValue.Split(‘:‘);

if(tokens.Length=2)

{

cookieToken=tokens[0].Trim();

fromToKen=tokens[1].Trim();

}

}

AntiForGery.Validate(cookieToken,fromToken);

}

}

public void OnAuthiorization(AuthorizationContexte context)

{

try

{

if(context.HttpContext.Request.IsAjaxRequest())//判断是否ajax提交

{

ValidateRequetHeader(context.HttpContext.Request);

}

else

AntiForgery.Validate();

}

catch

{

throw new HttpAntiForgeryException("...");

}

在Controller的Action中

1 [HttpPost]//指示POST提交

2 [MyValidateAntiForgeryToKen]//这儿调用自己写的过滤器,实现防止CSRF攻击

3 public ActionResult Value()

4 {

5 .......

6 }

原文:http://www.cnblogs.com/haoxiaozhang/p/3925237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值