博客
关于我
网络安全-跨站请求伪造(CSRF)的原理、攻击及防御
阅读量:133 次
发布时间:2019-02-26

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

跨站请求伪造(CSRF)攻击全解析

简介

跨站请求伪造(Cross-site Request Forgery,简称 CSRF),也被称为 one-click attack 或 session riding。它是一种通过已登录用户的浏览器 session cookie,执行非本意操作的攻击方式。与 XSS(跨站脚本)不同,CSRF 通过利用网站对用户浏览器的信任,完成恶意操作。

原理

CSRF 攻击的核心在于构造特定链接或请求,诱导已登录用户点击。攻击者通过以下步骤完成攻击:

  • 在自己的网站或邮件中引入恶意链接
  • 用户点击链接后,浏览器自动发送带有 session cookie 的请求
  • 该请求被目标网站误解为来自用户的合法操作
  • 攻击示例

    发现过程

    靶机的攻击过程如下:

  • 靶机准备:使用工具如 Burp Suite 或 Postman 发现目标网站的 CSRF 漏洞。
  • 登录靶机:使用账号 vince 123456 登录靶机。
  • 查看页面源码:发现目标页面的 form 数据未加密,存在 CSRF 漏洞。
  • 链接及请求伪造

    攻击者创建了两个 HTML 文件:

  • click.html:引诱用户点击恶意链接
  • requestforgery.html:包含请求伪造的页面
  • 攻击链接示例:

    http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=♀️&phonenum=13098763456&add=shanghai&email=vince@qq.com&submit=submit

    参数 add 被设置为 shanghai,修改地址。

    攻击过程

    攻击步骤:

  • 点击恶意链接:用户登录状态下点击链接
  • 请求伪造页面:跳转至伪造页面
  • 执行操作:界面刷新后显示修改地址
  • 攻击成功

    登录状态下重复操作,攻击成功修改地址。

    防御措施

    用户防护

  • 不登录:用户应避免在同一浏览器中访问敏感页面
  • 不点击链接:不随意点击来自陌生网站的链接
  • 专用浏览器:访问特殊网站时使用专用浏览器
  • 供应商防护

  • token 验证:使用 token 并设置过期时间
  • 验证码:添加简易验证码
  • 二次验证:在关键操作前核验身份
  • 技术防护

  • 防止 XSS:确保网站安全,不可被 XSS 攻击
  • 随机 token:生成随机 token 替代 session cookie
  • SameSite Attribute:设置 SameSite 属性,防止 cookie 被窃取
  • 总结

    CSRF 攻击通过已登录用户的 session cookie 完成,防御措施需从用户、供应商和技术三个层面入手。结合 token 和验证码等措施,可以有效防御 CSRF 攻击。

    转载地址:http://mwtf.baihongyu.com/

    你可能感兴趣的文章
    nginx如何实现图片防盗链
    查看>>
    Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理
    查看>>
    Nginx学习总结(11)——提高Nginx服务器的安全性,稳定性和性能的12种技巧
    查看>>
    Nginx学习总结(12)——Nginx各项配置总结
    查看>>
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    Nginx学习总结(15)—— 提升 Web 应用性能的十个步骤
    查看>>
    Nginx学习总结(1)——Nginx入门简介
    查看>>
    Nginx学习总结(2)——Nginx手机版和PC电脑版网站配置
    查看>>
    Nginx学习总结(3)——Nginx配置及应用场景之高级配置
    查看>>
    Nginx学习总结(4)——负载均衡session会话保持方法
    查看>>
    Nginx学习总结(5)——Nginx基本配置备忘
    查看>>
    Nginx学习总结(7)——Nginx配置HTTPS 服务器
    查看>>
    Nginx学习总结(8)——Nginx服务器详解
    查看>>
    Nginx学习总结(9)——前端跨域问题解决
    查看>>
    nginx学习笔记
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    nginx学习笔记003---Nginx代理配置_注意,在Windows中路径要用/
    查看>>
    Nginx学习笔记(一) Nginx架构
    查看>>
    nginx学习路线
    查看>>