1 CSRF简介

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作,有很大的危害性。然而,该攻击方式并不为大家所熟知,很多网站都有 CSRF 的安全漏洞。

CSRF所做的事情就是盗用了你的身份,以你的名义发送恶意请求

2.CSRF 攻击的基本路径及方法

完成攻击的两个步骤:

1)登录受信任网站A,并在本地生成Cookie。

2)在不登出A的情况下,访问危险网站B。

3 实例

这里履约、百度、csdn、饿了吗为例子,展示攻击的过程和看看预防的方法。

4防御措施

1. 检查 HTTP 头部 Refer 信息,这是防止 CSRF 的最简单容易实现的一种手段。根据 RFC 对于 HTTP 协议里面 Refer 的定义,Refer 信息跟随出现在每个 Http 请求头部。Server 端在收到请求之后,可以去检查这个头信息,只接受来自本域的请求而忽略外部域的请求,这样就可以避免了很多风险。当然这种检查方式由于过于简单也有它自身的弱点:

a) 首先是检查 Refer 信息并不能防范来自本域的攻击。在企业业务网站上,经常会有同域的论坛,邮件等形式的 Web 应用程序存在,来自这些地方的 CSRF 攻击所携带的就是本域的 Refer 域信息,因此不能被这种防御手段所阻止。

b) 同样,某些直接发送 HTTP 请求的方式(指非浏览器,比如用后台代码等方法)可以伪造一些 Refer 信息,虽然直接进行头信息伪造的方式属于直接发送请求,很难跟随发送 cookie,但由于目前客户端手段层出不穷,flash,javascript 等大规模使用,从客户端进行 refer 的伪造,尤其是在客户端浏览器安装了越来越多的插件的情况下已经成为可能了。

2. 使用一次性令牌,这是当前 Web 应用程序的设计人员广泛使用的一种方式,方法是对于 Get 请求,在 URL 里面加入一个令牌,对于 Post 请求,在隐藏域中加入一个令牌。这个令牌由 server 端生成,由编程人员控制在客户端发送请求的时候使请求携带本令牌然后在 Server 端进行验证。但在令牌的设计上目前存在着几个错误的方案:

a) 使用和 Session 独立的令牌生成方式。这种令牌的值和 Session 无关,因此容易被其他用户伪造。这里的其他用户指的是当前 Web 应用程序的其他用户和活跃在网络传输阶段各个设置上的监听者,这种恶意用户可能使用自己的令牌来进行替换以便达到伪造的目的。

b) 完全使用 Session 认证信息作为令牌的生成方式。这种保护方式对于保护 CSRF 是起了作用的,但是可能会造成其他危害,具体来说,如果某些 URL 或者网页被拷贝下来与其他人共享,那么这些 URL 或者拷贝下来的网页中可能会含有用户的会话信息,这种信息一旦被恶意用户获得,就能造成极大的危害。

因此,一个正确的令牌设计应该是使用 Session 信息做 Hash,用得出的哈希值来做 CSRF 的令牌。

3. 使用验证图片,这种方法的出现的作用是对于机器人暴力攻击的防止。但在 CSRF 的防范上,也有一些安全性要求比较高的的应用程序结合验证图片和一次性令牌来做双重保护。由于这种图片验证信息很难被恶意程序在客户端识别,因此能够提高更强的保护。当客户端的浏览器可能已经处于一种不安全的环境中的情况下(比如客户端的安全级别设置较低,客户端浏览器安装了不安全的插件等)。

以上给的这些只是防范 CSRF 的比较通用的一些方法,Web 开发人员可以根据自己对自己的应用程序的功能的理解来确定安全级别的要求从而选择使用不同的保护措施,也推荐在同一应用程序内部结合使用多种方法来进行保护

总结

csrf攻击容易被开发人员忽略,这种攻击稍加注意都能达到很好的防御效果,防御的放发总的来说归为两类,服务端和客户端:

1)区分get和post请求,并且遵守约定,对数据的修改请求都应该有验证信息

2)使得异步请求不易伪造,关心refer

如果同域下存在xss的话,除了验证码,其他的方式都无法防御这个问题

网络安全知识之Cross-Site Request Forgery (CSRF) 简介相关推荐

  1. DVWA关卡3:Cross Site Request Forgery (CSRF)(跨站请求伪造)

    目录 Low Medium High Impossible Cross Site Request Forgery (CSRF),跨站点请求伪造,它会让用户在当前经过身份验证的Web应用程序上执行攻击者 ...

  2. DVWA Cross Site Request Forgery (CSRF) -------WP

    CSRF: 介绍 CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求, ...

  3. DVWA 之 Cross Site Request Forgery (CSRF)

    汇总链接: https://baynk.blog.csdn.net/article/details/100006641 ---------------------------------------- ...

  4. security框架工作笔记002---CSRF跨站点请求伪造(Cross—Site Request Forgery)_理解和防御

    JAVA技术交流QQ群:170933152  CSRF概念:CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:   ...

  5. Web渗透-CSRF跨站点请求伪造(Cross—Site Request Forgery)

    CSRF/XSRF 跨站点请求伪造 `也被称为"One Click Attack"或者Session Riding` 一种对网站的恶意利用漏洞 但你不能保证以下情况不会发生: CS ...

  6. 403-In general, this can occur when there is a genuine Cross Site Request Forgery, or whe

    解决办法: 在django1.4里,就必须按照提示的步骤来: 1,在view里面,强制使用RequestContext 代替Context.示例如下: from django.template imp ...

  7. Asp.net MVC 3 防止 Cross-Site Request Forgery (CSRF)原理及扩展 安全 注入

    原理:http://blog.csdn.net/cpytiger/article/details/8781457 原文地址:http://www.cnblogs.com/wintersun/archi ...

  8. Cross-Site Request Forgery (CSRF) Attack Lab网安实验

    Cross-Site Request Forgery (CSRF) Attack Lab网安实验 3.1 Task 1: Observing HTTP Request. 使用F12打开网络元素,观察发 ...

  9. XSS(Cross Site Scripting)攻击简介

    环境 Ubuntu 22.04 IntelliJ IDEA 2022.1.3 JDK 17.0.3.1 Spring Boot 3.0.1 Firefox 108.0.2 问题和分析 在Intelli ...

最新文章

  1. nvcc 已退出,返回代码为1
  2. VTK:网格质量用法实战
  3. iOS压缩动画 CGAffineTransform
  4. Unix高级环境编程
  5. 【codevs2455】繁忙的都市
  6. 富文本编辑器quill的集成
  7. 使用Seam Framework + JBoss 5.0 开发第一个Web应用 - 简单投票程序
  8. 记录一次es head测试使用说明
  9. 基于单片机的智能窗帘系统设计(#0408)
  10. 开源大阅兵:盘点那些走向世界的中国项目
  11. 一加Ace竞速版,手游党的开心搭档
  12. freemaker 前端web教程
  13. Navicat导出MySQL数据表表结构
  14. 人形机器人——打篮球
  15. OpenCV3编程入门读书笔记4-形态学滤波
  16. 平面设计图文排版如何进行
  17. java接口和抽象类的区别和作用
  18. Unity项目接入IOS的Admob Native(原生视频广告) IOS SDK
  19. MySQL Connector/NET的下载以及安装教程
  20. Alfresco Community 7 安装(1)准备

热门文章

  1. 互联网晚报 | 7月9日 星期六 |马斯克终止收购推特;​B 站回应 2 亿余条用户账号疑泄露传闻;上海逐步开放电影院和演出场所...
  2. 如何在Excel表格中给某一列添加固定筛选项
  3. SEO挖掘核心关键词的策略技巧
  4. 蓝桥杯 Python 练习题 数字游戏
  5. 如何再html5中嵌入视频网站视频
  6. 【完全信息静态博弈-Nash均衡的特性】
  7. java弦截法,国家计算机软考高级程序员历年真题1996
  8. python画误差图_Python数据可视化:如何创建误差图
  9. 活码生成器是什么?怎么用活码生成器制作活码?有没有免费的活码生成器?
  10. Hive On Spark