跨站点请求伪造(CSRF)
一、前言
跨站点请求伪造(Cross-SiteRequest Forgeries, CSRF),是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击;有如下危害:
1、利用已通过认证的用户权限更新设定信息;
2、利用已通过认证的用户权限购买商品,虚拟货币转账;
3、利用已通过认证的用户权限在留言板发表言论;
二、攻击原理:
第一步:验证用户访问存在CSRF漏洞的网站A,网站A会给用户返回cookie,以便后面可以免登陆;
第二步:此时用户在同一浏览器打开一个有而已攻击代码的网站B,网站B返回一些攻击的代码,这些代码要求请求A网站;
第三步:浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据该验证用户的cookie信息以及权限处理该请求;
三、浏览器的cookie策略
上面讲到,网站B之所以能够通过网站A的验证,是因为B网站成功发送cookie的缘故。浏览器的cookie分为两种,一种是临时cookie,叫Seesion Cooie;另一种是'Third-party Cookie',也称‘本地cookie’。两者区别是在于,Third-party Cookie是服务器在Set-Cookie时指定的Expireid时间,只有到了Expire时间后Cookie才会失效,所以这种Cooki会保存在本地;而Session Cookie则没有Expire时间,所以浏览器关闭后,Session Cookie就失效了。
在浏览器的进程中,若是一个网站设置了Session Cookie,那么浏览器进程声明周期中,即使浏览器打开了一个新的额tab页,Session Cookie也都是有效的。Session Cookie保存在浏览器进程内存空间里面;而Third-party Cookie则保存在本地。
如果浏览器从一个域的页面中,要加载另外一个域的资源,由于安全考虑(p3p策略会有副作用,浏览器将不再拦截第三cookie的发送),某些浏览器会阻止Third-party Cookie的发送。
四、防御CSRF
1、验证 Referer check;
检查请求是否来自合法的‘源’,和‘防止图片盗链’同理。但是不能保证每次服务器都能拿到referer字段,比如在https跳转到http就不会发送referer;
2、使用手机或邮件验证码;
3、重要数据采用post请求,填写表单验证,但是破坏者可能会伪造form提交。
4、Anti CDRF Token
业界推崇这个方法。在请求中提添加一个token字段,如:www.hao123.com?name=abc&age=123&token=[random(seed)];token为客户端和浏览器的秘密,其他人不知道。一般要保证token的保密性和随机性。
跨站点请求伪造(CSRF)的更多相关文章
- 跨站点请求伪造(CSRF)总结和防御
什么是CRSF 构建一个地址,比如说是删除某个博客网站博客的链接,然后诱使已经登录过该网站的用户点击恶意链接,可能会导致用户通过自己的手将曾经发布在该网站的博客在不知情的情况下删除了.这种构建恶意链接 ...
- mvc3.0防止跨站点请求伪造(CSRF)攻击
众所周知,asp.net mvc程序在浏览器运行是产生标准的Html标签,包括浏览器要发送的关键数据等内容都在html内容里面.听起来不错,但是假如我们伪造类似的html内容,更改里面的关键数据,在浏 ...
- 跨站点请求伪造(CSRF)学习
一.CSRF介绍 伪造一个站点,在站点中伪造一个向其他站点的请求,在用户访问该站点时让用户执行 假设有如下URL能删除一篇文章: 攻击者在自己的域中构造一个页面: 内容为: 使用一个img标签,其地址 ...
- python---xss(Cross Site Scripting)跨站脚本攻击和csrf(xsrf)跨站点请求伪造(Cross—Site Request Forgery)攻击
xss跨站脚本攻击:恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. 例如:某些论坛允许用户自由发言,而 ...
- Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造
(一)数据分页 可以参考 https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...
- [不常用] - CSRF(跨站点请求伪造)
CSRF,Cross Site Request Forgery,即跨站点请求伪造. 这种攻击是指,在用户正常登录系统以后,攻击者诱使用户访问一些非法链接,以执行一些非法操作. 比如:如果删除用户操 ...
- Appscan漏洞之跨站点请求伪造(CSRF)
公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...
- 跨站点请求伪造 - SpringBoot配置CSRF过滤器
1. 跨站点请求伪造 风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务. 原因:应用程序使用的认证方法不充分. ...
- 密码学系列之:csrf跨站点请求伪造
目录 简介 CSRF的特点 CSRF的历史 CSRF攻击的限制 CSRF攻击的防范 STP技术 Cookie-to-header token Double Submit Cookie SameSite ...
随机推荐
- nodejs 负载均衡
教程:http://taobaofed.org/blog/2015/11/03/nodejs-cluster/ 纠正:net.createServerHandle(); 记录:http://www.j ...
- Swift3 重写一个带占位符的textView
class PlaceStrTextView: UIView,UITextViewDelegate{ var palceStr = "即将输入的信息" //站位文字 var inp ...
- Python自动化开发 - 进程、线程(一)
本节内容 1.操作系统发展史 2.进程和线程 3.Python threading 模块 一.操系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统 ...
- 1.html基础
认识html 1.1 Hyper text markup language 超文本标记语言. 超文本:超链接.(实现页面跳转) Html结构标准 < ! doctype html> ...
- [FMX]获取控件样式中的指定项目以便进行调节
[FMX]获取控件样式中的指定项目以便进行调节 2017-03-26 • C++ Builder.Delphi.教程 • 暂无评论 • swish •浏览 650 次 FMX 的样式丰富了我们的设计, ...
- 在linux上搭建nexus私服(CentOS7)
1.下载nexus安装包,下载地址 https://www.sonatype.com/download-oss-sonatype?hsCtaTracking=920dd7b5-7ef3-47fe-96 ...
- 一些LinuxC的小知识点(二)
一.read系统调用 系统调用read的作用是:从与文件描述符filedes相关联的文件里读入nbytes个字节的数据,并把它们放到数据区buf中.它返回实际读入的字节数.这可能会小于请求 ...
- Redis 5.0 安装
下载安装RedisServer mkdir –p /data/download && cd /data/download wget http://download.redis.io/r ...
- mysql rand
在where语句中,rand有时候会出现多条记录
- 如何在C#中引入CPLEX的dll(CPLEX系列-教程一)
以前写在CSDN上的文章.转到博客园之后,打算把这个教程移过来,顺便完善后面的教程.主要是在Asp.Net+EF6里面使用cplex,完成一个最优生产计划的决策.当时在查找如何在C#中引用cplex时 ...