CSRF攻击:简单服务器防御

CSRF(Cross-site request forgery)跨站请求伪造,攻击原理及详细的防御方法:浅谈CSRF攻击方式


CSRF的防御:

 CSRF的防御可以从服务端客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。

 服务端的CSRF防御方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数

 1.Cookie Hashing(所有表单都包含同一个伪随机值):

 这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了

<?php
 //构造加密的Cookie信息
 $value = “DefenseSCRF”;
 setcookie(”cookie”, $value, time()+3600);
?>
 在表单里增加Hash值,以认证这确实是用户发送的请求。

<form method=”POST” action="transfer.php">
   <input type="text" name="toBankId">
   <input type="text" name="money">
   <input type="hidden" name="hash" value="<?=$hash;?>">
   <input type="submit" name="submit" value="Submit">
</form>

 然后在服务器端进行Hash值验证

<?php
    if(isset($_POST['check'])) {
        $hash = md5($_COOKIE['cookie']);
        if($_POST['check'] == $hash) {
            doJob();
        } else {
            //... 
        }
    } else { 
        //... 
    }
?> 

这个方法可以防止绝99%的CSRF攻击了,那剩下的1%呢....由于用户的Cookie很容易由于网站的XSS漏洞而被盗取,这就另外的1%。一般的攻击者看到有需要算Hash值,基本都会放弃了,某些除外,所以如果需要100%的杜绝,这个不是最好的方法。


本文转载自浅谈CSRF攻击方式



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值