web api csrf


通过Ajax预防CSRF

除了上述方法,还可以通过Ajax来和服务器通信来减少CSRF的风险。这时候可以考虑在请求的header里加入页面信息来做合法性验证。比如参考如下代码:

1
2
3
4
5
6
7
8
9
10
11
functionpost(){
 
    varxhr =newXMLHttpRequest();
    xhr.open("POST","/create",true);
    …….
    // 在xhr.open方法后,进行header设置。
    xhr.setRequestHeader("X-From", location.href );
    ……
    xhr.send( s );
    returnfalse;
}

服务器端在接收到客户端的请求后,会进行如下处理:

  1. 检查header里的Host是否正确。
  2. 检查是否设置了“X-From”属性,是否是正确的page url的值。
  3. 检查Origin header属性,这个值可以是:
    没有设置;
    或者:如果设置了,则应该和X-From一样。

如果请求满足了所有这些条件,都可以认为是正常的访问。

如果攻击者如果直接通过假页面提交Form,则不能在header里设置X-From属性;而如果攻击者也用Ajax提交,则header里的Origin因为不能伪造,也不能达到攻击的目的。从而达到了预防CSRF的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值