CSRF***与防御

2024-05-12 00:11:40

概述

CSRF是Cross Site Request Forgery的缩写,中文是跨站点请求伪造;接下来将和大家分享这种***的原理、实施的方法、以及防御的几种方案;

CSRF***的原理

通过在恶意网站部署好***代码和相关数据,然后引导目标网站的已经授权的用户进入恶意网站,由于浏览器已经获得了目标网站的用户授权票据,因此恶意网站就可以执行“事先”部署好的代码向目标网站提交数据使目标网站执行一些写的操作,比如删除目标网站的数据、向目标网站提交垃圾数据等,然而这个过程是在后台默默执行的,用户毫不知情。

举个例子说明一下吧:

假设www.t.com是目标网站,有一个页面www.t.com/blog/delete.aspx?id=123 是删除ID为123的博文操作;

那么***者就可以在恶意网站www.a.com/csrfpage.aspx页面部署下面的代码:

<form id="csrffrm" action="http://www.t.com/blog/delete.aspx" target="hideiframe"><input name="id" type="hidden" value="123" /></form>

<iframe name="hideiframe" style='display:none'></iframe>

<script>

document.getElementById("csrffrm").submit();

</script>

然后狡猾的***者就可以通过各种方式吸引已经成功登陆www.t.com的用户点击进入www.a.com/csrfpage.aspx页面,最后恶意代码被执行,用户的博文ID为123的文章在不知不觉中被***者删除了

CSRF***的条件

根据上面的原理可以看出要实施CSRF***需要满足下面几个条件:

一、需要了解目标系统的目录和相关参数名称,其实要满足这个条件并不困难,***者通过相关的“系统目录彩虹表”进行检测又或者***者本身也是目标系统的用户之一,那么了解目标系统就更容易了;

二、需要一个执行恶意代码的网站,这个网站有可能是***者事先部署好的网站,或者恶意网站存在XSS漏洞刚好被***者利用;

三、需要目标系统的用户登录并且获得了合法的操作权限,同时用户被诱惑进入了恶意的网站;

要实施CSRF***要满足这三个条件,由于这些条件并不是那么容易被满足,所以比较容易被开发者所忽略。

CSRF***的防御策略

1.使用验证码

记得之前的12306网站上每次查票都要输入恶心的验证码,之所以要设计这个验证码它的目的是为了防止机器刷票,当然也能有效的预防CSRF***,但是如果每个操作都要用户输入验证码用户可能会崩溃掉,用户体验效果非常的不好;

2.检查Referer(来源)

除了验证码还可以检查Referer是否来自于同一个源,如果Referer是同源的那么这个操作是可信的,这个方法通常用于防止图片盗链,但是有些时候Referer并不是那么的可靠,服务器并不是能够百分之百的获得,比如如果用户启用了浏览器的隐私策略那么浏览器就有可能阻止发送Referer,服务器就有可能无法获取到这个值,所以这个方式不符合科学严谨的原则;

3.使用token(随机令牌)

服务器生成一个随机令牌,并保存起来,可以保存在服务端的session集合里边,或者保存在客户端的cookie、或者页面视图状态中都是可以的,由于浏览器的同源策略,恶意网站无法读取到目标网站的cookie和页面视图状态,然后把随机令牌随表单一起提交并在服务端验证随机令牌的有效性;

转载于:https://blog.51cto.com/983836259/1623146

CSRF***与防御相关推荐

  1. csrf防御 php,跨站请求伪造CSRF的防御实例(PHP版本)

    跨站请求伪造CSRF的防御:One-Time Tokens(不同的表单包含一个不同的伪随机值) 在实现One-Time Tokens时,需要注意一点:就是"并行会话的兼容".如果用 ...

  2. csrf漏洞防御方案_绕过CSRF防御

    CSRF漏洞很容易就可以被发现并利用.一眼看去很多站点好像在这方面都做得不错:当你检查针对敏感操作的请求时,他们往往会实施CSRF保护.有时候可能是一个在请求主体中的CSRF token,也有可能是一 ...

  3. XSS及CSRF攻击防御

    一.概念: XSS攻击全称跨站脚本攻击(Cross Site Scripting); CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Clic ...

  4. csrf漏洞防御方案_CSRF原理实战及防御手段

    注:本文仅供学习参考 csrf定义: CSRF跨站点请求伪造(Cross-Site Request Forgery)攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是 ...

  5. spring mvc中实现csrf安全防御简记

    1.csrf是什么 csrf全称是Cross-site request forgery,http://en.wikipedia.org/wiki/Csrf 危害:使受害用户在不经意间执行了不是用户意愿 ...

  6. CSRF攻击防御方法

    目前防御 CSRF 攻击主要有三种策略: 1. 验证 HTTP Referer 字段: 根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址.对于 ...

  7. csrf攻击防御 php,Yii2.0防御csrf攻击方法

    yii2中无论是用测试工具POSTMAN.用命令行CURL请求.ajax请求总是会得到http400:Bad Request的错误:而如果用Web网页方式GET访问(去除verbFilter的POST ...

  8. csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...

  9. 通过验证Referer解决CSRF安全防御问题

    一.背景 JAVAWEB 类项目处于客户验收阶段,在安全扫描处出现 CSRF 问题,通过多个博客中解决思路都无法解决.后来通过同事提醒 可以试试判断 Referer页面来源参数,最终使用该方法解决问题 ...

最新文章

  1. cocos2d-x 3.10 PageView BUG
  2. 网易微专业之《前端开发工程师》学习笔记(1)
  3. suse11 oracle11g 安装
  4. NHibernate重要概念的解释和说明
  5. FreeJTS部标视频平台:JT/T808、JT/T809、JT/T796、JT/T794、JT/T1078、苏标ADAS的区别
  6. 广州的11个辖区_广州上半年经济发展情况,天河区总量超过2000亿
  7. android popupwindow 自定义背景,android – 无法将PopupWindow背景设置为透明
  8. 网摘--2014年5月12日
  9. GraalVM上的Picocli:极快的命令行应用程序
  10. leetcode 395. 至少有 K 个重复字符的最长子串(滑动窗口)
  11. iphone iPhone开发中为UINavigationBar设置背景图片方法
  12. 最新可用的goole翻译接口
  13. 贝塞尔曲线初识 (数学)
  14. Android请求麦克风权限+系统权限页面回调
  15. ASP Err.Number 错误描述详解
  16. SVN报错:can‘t open file db/txn-current-lock:permission denied 解决方法
  17. css 设置元素背景为透明
  18. java实现加减乘除_用Java编写实现加减乘除,界面如下
  19. 蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访
  20. JS无限滚动、回到顶端和图片懒加载

热门文章

  1. ssdp协议 upnp_SSDP 简单服务发现协议
  2. mybatis count返回null_Mybatis属性示例-Properties的三种配置方式
  3. c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...
  4. ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
  5. python socket清空接受区_原始Python服务器
  6. linux比较两个文件md5,linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致。...
  7. mybatis传参数
  8. JavaScript高级笔记
  9. Hive | 加载数据后,出现字段显示为 NULL的问题
  10. 计算机常用的数制及编码