之前介绍过csrf的攻击原理和防御, 请见"https://blog.csdn.net/stpeace/article/details/53512283", 本文就不再赘述。

 

     最近模拟实践了一番,来简要说说:

      1.  Alice欠Bob 100元钱, 通过银行转账给Bob,  一切合情合理, Alice的浏览器执行的操作是:

http://www.bank.com/transfer.php?from=Alice&money=100&to=Bob

      2.   Cathy想攻击一下Alice,  所以Cathy在自己的浏览器执行:

http://www.bank.com/transfer.php?from=Alice&money=9999&to=Cathy

      显然, Cathy不能得逞, 因为Alice在转账的时候, 银行后台服务器会验证http请求中的cookie信息和身份, 确认是Alice本人, 才能真正执行转账操作(因为Alice输入过银行密码, 所以能确认Alice的身份)

     3. Cathy并不气馁, 就自己制作了一个网页, 访问方法是:http://www.benefit.com/choujiang.php,  用抽奖来吸引眼球,  choujiang.php吐回的内容是:

<html>
<body>
<form method="get" action="http://www.bank.com/transfer.php">
    <input type="hidden" name="from" value="Alice">
    <input type="hidden" name="money" value="9999">
    <input type="hidden" name="to" value="Cathy">
    <input type="button" onclick="submit()" value="Begin Choujiang">
</form>
</body>
</html>

       只要Alice点击了http://www.benefit.com/choujiang.php, 就会在自己的浏览器页面显示一个抽奖按钮。 

       如果Cathy刚给Bob转账完毕, 又点击了这个"Begin Choujiang"按钮, 就相当于Cathy的浏览器发起了如下请求:

http://www.bank.com/transfer.php?from=Alice&money=9999&to=Cathy

       此时, 一场悲剧上演了, 银行后台服务器从http的cookie中识别出确实是Alice在转账给Cathy, 是合理操作。但是,Alice并不知情, 于是9999元流进了Cathy的银行账户。

       本质上, 就是Alice无意中帮Cathy执行了Cathy自己想执行而没法执行的转账操作。

 

       应该说明白了, 有兴趣的朋友可以自己模拟下。

 

 

 


本文转载:CSDN博客