当前位置: 首页 > news >正文

CSRF跨域请求伪造

1.SSRF服务端请求伪造(外网访问内网)

   SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

其实也就相当于一个中间人攻击(主要目的就是:由外网攻击者利用SSRF漏洞攻击内网)
一般来说基本都是通过脚本去扫内网的ip、端口点到为止

产生原因:SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。即也就是说服务器端的验证并没有对其请求如获取图片的参数(image=)做出严格的过滤以及限制,从而导致A网站可以从其他服务器的获取数据

2.CSRF跨站请求伪造(也叫点击攻击)

原理:程序员开发的时候,未对相关页面进行token和referer判断,造成攻击者可构造自己的URL地址欺骗目标用户进行点击。(点击后因为未对相关页面进行token和referer判断,即链接中没得带token或者数据包中没得referer这类的操作,所以链接地址没得校验操作直接执行了)其实也就是像下面的重要页面的防范措施没有做到位
在这里插入图片描述

3.解决CSRF

CSRF工具的防御手段

1. 尽量使用POST,限制GET

GET接口太容易被拿来做CSRF攻击只要构造一个img标签,而img标签又是不能过滤的数据。接口最好限制为POST使用,GET则无效,降低攻击风险。

当然POST并不是万无一失,攻击者只要构造一个form就可以,但需要在第三方页面做,这样就增加暴露的可能性。

2. 浏览器Cookie策略

IE6、7、8、Safari会默认拦截第三方本地Cookie(Third-party Cookie)的发送。但是Firefox2、3、Opera、Chrome、Android等不会拦截,所以通过浏览器Cookie策略来防御CSRF攻击不靠谱,只能说是降低了风险。

PS:Cookie分为两种,Session Cookie(在浏览器关闭后,就会失效,保存到内存里),Third-party Cookie(即只有到了Exprie时间后才会失效的Cookie,这种Cookie会保存到本地)。

PS:另外如果网站返回HTTP头包含P3P Header,那么将允许浏览器发送第三方Cookie。

3. 加验证码

验证码,强制用户必须与应用进行交互,才能完成最终请求。在通常情况下,验证码能很好遏制CSRF攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。

4. Referer Check

Referer Check在Web最常见的应用就是“防止图片盗链”。同理,Referer Check也可以被用于检查请求是否来自合法的“源”(Referer值是否是指定页面,或者网站的域),如果都不是,那么就极可能是CSRF攻击。

但是因为服务器并不是什么时候都能取到Referer,所以也无法作为CSRF防御的主要手段。但是用Referer Check来监控CSRF攻击的发生,倒是一种可行的方法。

5. Anti CSRF Token

现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)。

例子:

  1. 用户访问某个表单页面。

  2. 服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。

  3. 在页面表单附带上Token参数。

  4. 用户提交请求后, 服务端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则非法请求。

这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构造一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。

http://www.lryc.cn/news/207951.html

相关文章:

  • LeetCode 1465. 切割后面积最大的蛋糕:纵横分别处理
  • YTM32的增强型定时器eTMR外设模块详解
  • 40.查找练习题(王道2023数据结构第7章)
  • Segmentation fault 的bug解决
  • 【Python机器学习】零基础掌握BaggingRegressor集成学习
  • 麒麟KYLINOS通过命令行配置kysec的防火墙
  • 磁盘监控:告警时发送邮件
  • 【HarmonyOS】元服务卡片router实现跳转到指定页面并传动态参数
  • Centos安装RabbitMQ,JavaSpring发送RabbitMQ延迟延时消息,JavaSpring消费RabbitMQ消息
  • leetcode:1323. 6 和 9 组成的最大数字(python3解法)
  • SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)
  • LLaVA:visual instruction tuning
  • Python实现双目标定、畸变矫正、立体矫正
  • showdoc 文件上传 (cnvd-2020-26585)
  • Java数据类型,变量与运算符
  • Linux nm命令
  • iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
  • OpenCamera拍照的代码流程
  • 华为OD机考算法题:矩阵最大值
  • 【Javascript】函数之形参与实参
  • PAT 乙级1090危险品装箱
  • Response Header中不暴露Server(IIS)版本、ASP.NET及相关版本等信息
  • 测试C#调用Vlc.DotNet组件播放视频
  • JS的事件委托(Event Delegation)
  • selenium+python自动化安装驱动 碰到的问题
  • laravel+vue2 element 一套项目级医院手术麻醉信息系统源码
  • GEE——使用MODIS GPP和LAI数据进行一元线性回归计算和R2分析
  • [论文阅读]Point Density-Aware Voxels for LiDAR 3D Object Detection(PDV)
  • 自动化学报格式 Overleaf 在线使用 【2023最新教程】
  • 掌握CSS动画技巧:打造引人注目的页面过渡效果!