提示:前端查漏补缺,仅代表个人观点,不接受任何批评

文章目录

  • 一、CSRF是什么?
  • 二、CSRF的攻击方式
    • 1.浏览器的Cookie策略
    • 2.GET,POST请求
    • 3.P3P头的副作用
  • 三、防范CSRF攻击的方法
    • 1. 请求头中带token;
    • 2. 后端验证源referer字段;
    • 3. 验证码
  • 总结

提示:以下是本篇文章正文内容,下面案例可供参考

一、CSRF是什么?

  • CSRF:Cross Site Request Forgy(跨站请求伪造

  • 指的是利用用户身份操作用户账户的一种攻击方式,即攻击者诱使用户访问一个页面,就以该用户身份在第三方有害站点中执行了一次操作,泄露了用户的身份信息,接着攻击者就可以使用这个伪造的,但真实存在的用户身份信息,到某网站冒充用户执行一些恶意操作。


二、CSRF的攻击方式

想知道如何防范,肯定得先知道别人是怎样进行攻击的

1.浏览器的Cookie策略

浏览器所持有的策略一般分为两种:

  • Session Cookie,临时Cookie。保存在浏览器进程的内存中,浏览器关闭了即失效。
  • Third-party Cookie,本地Cookie。服务器在Set-Cookie时指定了Expire Time。过期了本地Cookie失效,则网站会要求用户重新登录。

我们通常在浏览网站的过程中,即使浏览器打开了Tab页,Session Cookie都是有效的,因此发起CSRF攻击是可行的

2.GET,POST请求

  • 大多数 CSRF 攻击,都是通过<img> 、 <iframe> 、 <script>等带 src 属性的标签,这类标签只能发送一次 GET 请求,而不能发送 POST 请求,由此也有了认为 CSRF 攻击只能由 GET 请求发起的错误观点。

  • 构造一个 POST 请求,只需要在一个不可见的iframe窗口中,构造一个form表单,然后使用JavaScript自动提交这个表单。那么整个自动提交表单的过程,对于用户来说就是不可见的。

3.P3P头的副作用

"P3P Header"是 “W3C” 制定的一项关于隐私的标准,全称是 “The Platform for Privacy Preference”(隐私偏好平台)

如果网站返回给浏览器的 HTTP 头包含有 P3P 头,则在某种程度上来说,将允许 浏览器发送第三方 Cookie。在 IE 下即使是"<iframe>"<script>等标签页将不再拦截第三方 Cookie 的发送。主要应用在类似广告等需要跨域访问的页面。


三、防范CSRF攻击的方法

1. 请求头中带token;

由服务端随机生成token,保存在服务端session中,同时保存到客户端中,客户端发送请求时,把token带到HTTP请求头或参数中,服务端接收到请求,后台通过验证请求中的token与session中的是否一致。如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

2. 后端验证源referer字段;

根据 HTTP 协议,在 HTTP 头中有一个字段叫Referer,它记录了该 HTTP 请求的来源地址。通过验证Referer,可以检查请求是否来自合法的"源"。

3. 验证码

通过增加网站A的验证手段,例如增加图形验证码短信验证码等等,只有通过验证的请求才算合法。但是这种方案拥有两个局限性,一个是增加开发成本,另外一个是降低用户体验。


总结

我们在日常项目开发中应该重点注意一下几点

  • Get 请求不对数据进行修改
  • 不让第三方网站访问到用户 Cookie
  • 阻止第三方网站请求接口
  • 请求时附带验证信息,比如验证码或者 token

前端安全之CSRF攻击(跨站请求伪造)相关推荐

  1. CSRF(跨站请求伪造)攻击 --

    CSRF(跨站请求伪造)攻击 CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式,又被称为One-Click Attack或Ses ...

  2. 河南省高校联盟战队课件CSRF(跨站请求伪造复现与利用)

    CSRF(跨站请求伪造) 个人介绍 id:故事 普通的web喵 详细视频 CSRF(跨站请求伪造) #CSRF-原理&危害&探针&利用等 #详细点: CSRF全称:Cross- ...

  3. CSRF:跨站请求伪造

    CSRF:跨站请求伪造 CSRF与XSS的区别 原理 特点 漏洞利用条件 自动扫描程序的检测方法 例 CSRF与XSS的区别 1.XSS:利用用户对站点的信任 2. CSRF:利用站点对已经身份认证的 ...

  4. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  5. 【转载】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  6. CSRF(跨站请求伪造攻击)详解以及防护之道

    CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执 ...

  7. 模拟一次CSRF(跨站请求伪造)例子,适合新手

    GET请求伪造 有一个论坛网站,网站有一个可以关注用户的接口,但是必须登录的用户才可以关注其他用户. 这个网站的网站是www.a.com 有一天有一个程序员想提高自己的知名度,决定利用CSRF让大家关 ...

  8. 对CSRF(跨站请求伪造)的理解

    2019独角兽企业重金招聘Python工程师标准>>> 下班的时候跟公司大神一起走,问了他几个问题,接着就给我讲了XSS攻击和CSRF攻击,他通过举例子的方式讲解,通俗易懂,感觉收获 ...

  9. 什么是CSRF(跨站请求伪造)?

    文章目录 1. CSRF是什么? 1.1 CSRF攻击细节 CSRF攻击原理及过程如下: 2. CSRF漏洞检测 3. 防御CSRF攻击: 3.1 验证 HTTP Referer 字段 3.1.1 优 ...

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

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

最新文章

  1. java中collection方法_Java 8中的Collector toCollection()方法
  2. 苹果向App Analytics添加新的指标和特性
  3. 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
  4. LeetCode Different Ways to Add Parentheses(递归,动态规划)
  5. Wowza Media Server媒体服务器应用
  6. python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)
  7. 鸿蒙os2.0公测机型,鸿蒙OS2.0第二期第三期公测机型陆续公布 麒麟980和麒麟820将登场...
  8. oel6mysql_OEL6.5_X86平台部署Oracle 11gR2 RAC并配置ACFS
  9. AJAX无刷新搜索,即输即得(未完善…)
  10. ubuntu man命令彩色高亮显示
  11. 分布式室内空气质量监测系统设计
  12. donet 微服务开发 学习-consul 消费端开发
  13. IP:网络上的击鼓传花
  14. BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
  15. Mac地址多少位(48位的(6个字节)) IP多少位
  16. JAVA视频网盘分享
  17. Python实现黑白棋人机对弈
  18. 计算机实际应用的例子,作业二:单工通信;半双工通信; 双工通信;有哪些实际应用的例子...
  19. 【矩阵论】01——线性空间——基本概念
  20. CNN卷积层神经元数量、连接数量、权重数量的计算

热门文章

  1. WINDOWS程式设计--计时器
  2. Android程序活动单元Activity
  3. 抖音跳转微信小程序方法有哪些
  4. 运维配置:Nginx日志配置详解
  5. kaggle等算法比赛的合奏方法Ensemble(全)
  6. JavaScript快速入门(1)
  7. App提交 App Store 审核,遇到过哪些坑?
  8. 计算机控制面板里没有家长控制,控制面板里没有家长控制
  9. Linux centos7升级内核(两种方法:内核编译和yum更新)
  10. VUE3 获取元素高度