• CSRF防范介绍之一


    一、前言

    CSRF是Cross Site Request Forgery的缩写,即跨站请求伪造,CSRF攻击是借助受害者的Cookie骗取服务器的信任,以受害者名义伪造请求对服务器进行攻击,一直以来有个疑问,前后端分离使用LocalStorage存储用户令牌token是否还存在CSRF漏洞?今天我们先用Flask 搭建一个CSRF攻击简单例子来理解一下攻击过程,只有理解是如何攻击的才能做好防范。

    二、正常网站A

    搭建一个虚拟的银行网站,应用启动于8080端口,账号登录后就可以向其他账号进行转账,程序代码结构如下:

    index.py

    注:GET请求进入登录页面,POST请求获取登录页用户名密码验证通过后跳到转账页面,然后设置Cookie,用于转账时对用户进行验证。

    注:GET请求进入转账页面,POST请求进行转账,转账前先验证Cookie是否有效,然后再进行转账。

    login.html

    transfer.html

    登录成功后进入转账页面可以进行正常转账

    如果没登录直接打开页面 http://127.0.0.1:8080/transfer是会被重定向到登录页,必须先登录才能进行转账页面。

    三、恶意网站B

    另外搭建一个攻击网站,这里我们将应用启动在8081端口,代码结构如下:

    index.py

    index.html

    注:这里action指向网站A,然后页面做得很炫,用色情或者领取优惠券等吸引眼球的效果诱导你去点击链接,如果这时你在正常网站A登录成功没有退出,然后点了恶意网站B的链接。B网站的Form表单将允许跨域提交给正常网站A的转账接口地址并且会将A网站的Cookie携带过去,这样就会执行A网站的代码进行转账。

    A网站登录没有退出的情况下,在B网站点击链接

    这样你用qingcai1在A网站登录然后点击了B网站的链接,qingcai1的钱就被恶意地转到qing

    cai2账号去了。

  • 相关阅读:
    vulnhub靶机Funbox11
    5G频段简介
    day24-服务器端渲染技术02
    如何计算Renko大小,FPmarkets用ATR3步计算
    shadow bias之为啥有acne
    【密码学】第三章、分组密码
    均匀B样条曲线的表达式
    新浪微博一键删除所有内容
    【设计模式】聊聊模板模式
    Java的stream流进行分页取数据
  • 原文地址:https://blog.csdn.net/2301_76787421/article/details/134077266