博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC ajax提交 防止CSRF攻击
阅读量:4312 次
发布时间:2019-06-06

本文共 1349 字,大约阅读时间需要 4 分钟。

//在View中

<script type="text/javascript">

@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':'@ToKenHeaderValue()'},
success:fucntion(data){....}
})
})
</script>

//自己写的过滤器
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 }

转载于:https://www.cnblogs.com/haoxiaozhang/p/3925237.html

你可能感兴趣的文章
android Manifest.xml选项
查看>>
Cookie/Session机制具体解释
查看>>
ATMEGA16 IOport相关汇总
查看>>
有意思的cmd命令
查看>>
js正則表達式语法
查看>>
Git学习系列-Git基本概念
查看>>
c#多个程序集使用app.config 的解决办法
查看>>
Linux+Apache+PHP+MySQL服务器环境配置(CentOS篇)
查看>>
Linux下获取本机IP地址的代码
查看>>
(C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误
查看>>
flex布局
查看>>
python-----python的文件操作
查看>>
java Graphics2d消除锯齿,使字体平滑显示
查看>>
控件中添加的成员变量value和control的区别
查看>>
Spring Boot Docker 实战
查看>>
Div Vertical Menu ver3
查看>>
Git简明操作
查看>>
InnoDB为什么要使用auto_Increment
查看>>
课堂练习之买书打折最便宜
查看>>
定义函数
查看>>