CSRF跨站点请求伪造(Cross Site Request Forgery)和XSS攻击一样,有巨大的危害性,就是攻击者盗用了用户的身份,以用户的身份发送恶意请求,但是对服务器来说这个请求是合理的,这样就完成了攻击者的目标。

CSRF攻击的过程原理是:

用户打开浏览器,访问目标网站A,输入用户名和密码请求登录

用户信息在通过认证后,网站A产生一个cookie信息返回给浏览器,这个时候用户以可正常发送请求到网站A

用户在没有退出网站A之前在同一个浏览器打开了另一个新网站B。

新网站B收到用户请求之后返回一些攻击代码,并发出一个请求要求访问返回cookie的网站A

浏览器收到这些攻击性代码之后根据新网站B的请求在用户不知道的情况下以用户的权限操作了cookie并向网站A服务器发起了合法的请求。

预防CSRF攻击主要有以下策略:

使用验证码,在表单中添加一个随机的数字或者字母验证码,强制要求用户和应用进行直接的交互。

HTTP中Referer字段,检查是不是从正确的域名访问过来,它记录了HTTP请求的来源地址。

使用token验证,在HTTP请求头中添加token字段,并且在服务器端建立一个拦截器验证这个token,如果token不对,就拒绝这个请求。

验证HTTP Referer字段的好处就是实施起来特别简单,普通的网站开发不需要特别担心CSRF漏洞,只需要在最后面设置一个拦截器来验证referer的值就可以了,不需要改变已有的代码逻辑,非常便捷。但是这个方法也不是万无一失的,虽然referer是浏览器提供的,但是不同的浏览器可能在referer的实现上或多或少有自身的漏洞,所以使用referer的安全保证是通过浏览器实现的。使用token验证的方法要比referer更安全一些,需要把token放在一个HTTP自定义的请求头部中,解决了使用get或者post传参的不便性。

最新文章

  1. C# Invoke或者BeginInvoke的使用
  2. Ubuntu下deb文件及tgz文件安装
  3. Web Analytics 2.0 中文翻译 [ 系列索引 ]
  4. codeforces Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)// 二分的题目硬生生想出来ON的算法
  5. xilium CefGlue集成包
  6. hdu 2896 病毒侵袭 ac自动机
  7. 使用EXECUTE IMMEDIATE来生成含有绑定变量的SQL
  8. ubuntu下安装oracle
  9. SQLserver查看数据库端口 脚本
  10. PHP上传遇到的问题-php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
  11. 【HDOJ】2544 最短路
  12. mac在 aliyun linux ecs实例上安装 jdk tomcat mysql
  13. Linux下arp用法
  14. app wap开发mobile隐藏地址栏的js
  15. 【原】eclipse创建maven工程时,如何修改默认JDK版本?
  16. windows下配置maven
  17. rxjs 常用的管道操作符
  18. Aop的基本介绍
  19. Dubbo -- 系统学习 笔记 -- 示例 -- 集群容错
  20. [Luogu 3128] USACO15DEC Max Flow

热门文章

  1. Pytorch实战学习(四):加载数据集
  2. Visusl Studio使用技巧
  3. SQL server数据库 账户SA登录失败,提示错误:18456
  4. MxDraw云图平台(H5在线CAD) 网页CAD,网页查看CAD图纸,2023.02.26更新
  5. MySQL半一致读实验
  6. 一加5T刷入魔趣
  7. Linux上的I2C基础知识
  8. Gradle 安装配置
  9. COM三大接口:IUnknown、IClassFactory、IDispatch。
  10. SAP Process Orchestration (SAP PO): The Comprehensive Guide (2nd Edition) (SAP PRESS)