一、前言

  跨站点请求伪造(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)的更多相关文章

  1. 跨站点请求伪造(CSRF)总结和防御

    什么是CRSF 构建一个地址,比如说是删除某个博客网站博客的链接,然后诱使已经登录过该网站的用户点击恶意链接,可能会导致用户通过自己的手将曾经发布在该网站的博客在不知情的情况下删除了.这种构建恶意链接 ...

  2. mvc3.0防止跨站点请求伪造(CSRF)攻击

    众所周知,asp.net mvc程序在浏览器运行是产生标准的Html标签,包括浏览器要发送的关键数据等内容都在html内容里面.听起来不错,但是假如我们伪造类似的html内容,更改里面的关键数据,在浏 ...

  3. 跨站点请求伪造(CSRF)学习

    一.CSRF介绍 伪造一个站点,在站点中伪造一个向其他站点的请求,在用户访问该站点时让用户执行 假设有如下URL能删除一篇文章: 攻击者在自己的域中构造一个页面: 内容为: 使用一个img标签,其地址 ...

  4. python---xss(Cross Site Scripting)跨站脚本攻击和csrf(xsrf)跨站点请求伪造(Cross—Site Request Forgery)攻击

    xss跨站脚本攻击:恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. 例如:某些论坛允许用户自由发言,而 ...

  5. Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造

    (一)数据分页  可以参考  https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...

  6. [不常用] - CSRF(跨站点请求伪造)

    CSRF,Cross Site Request Forgery,即跨站点请求伪造.   这种攻击是指,在用户正常登录系统以后,攻击者诱使用户访问一些非法链接,以执行一些非法操作. 比如:如果删除用户操 ...

  7. Appscan漏洞之跨站点请求伪造(CSRF)

    公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...

  8. 跨站点请求伪造 - SpringBoot配置CSRF过滤器

    1. 跨站点请求伪造   风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务.   原因:应用程序使用的认证方法不充分. ...

  9. 密码学系列之:csrf跨站点请求伪造

    目录 简介 CSRF的特点 CSRF的历史 CSRF攻击的限制 CSRF攻击的防范 STP技术 Cookie-to-header token Double Submit Cookie SameSite ...

随机推荐

  1. toast js

    参考别人的,自己改写了下,很好用. <!DOCTYPE html> <html lang="zh-CN"> <head> <meta ch ...

  2. 分形之谢尔宾斯基(Sierpinski)四面体

    前面讲了谢尔宾斯基三角形,这一节的将对二维三角形扩展到三维,变成四面体.即将一个正四面体不停地拆分,每个正四面体可以拆分成四个小号的正四面体.由二维转变到三维实现起来麻烦了许多.三维的谢尔宾斯基四面体 ...

  3. Apollo 配置详细步骤(Windows环境)

    一. 准备工作 1.下载 apollo 安装包 下载链接:http://activemq.apache.org/apollo/download.html 2.下载 JavaJDK 安装包 ( apol ...

  4. GDI+配置

    GDI+的配置过程: 一.打开stdafx.h文件,在其中加入: #include "Gdiplus.h" #pragma comment(lib,"Gdiplus.h& ...

  5. 基于Windows 机器学习(Machine Learning)的图像分类(Image classification)实现

    今天看到一篇文章  Google’s Image Classification Model is now Free to Learn  说是狗狗的机器学习速成课程(Machine Learning C ...

  6. 深入解析SQL Server高可用镜像实现原理

    本文来自网易云社区 SQL Server 是windows平台.NET架构下标配数据库解决方案,与Oracle.MySQL共同构成了DB-Engines Ranking的第一阵营,在国内外企业市场中有 ...

  7. C/S,B/S的应用和区别

    ·C/S——客户/服务器模式 特点:非对等相互作用——即客户与服务器出于不平等的地位 表现在:服务器用有客户所不具备的硬件和软件资源以及运算能力,服务器提供服务,客户请求服务. A.客户端与服务器的数 ...

  8. 关于 kali linux

    2.更新系统:首先更换一个速度快点的国内源(1) lsb_release -a先看你的版本,是Rolling还是其他什么(2) leafpad /etc/apt/sources.list(源的默认文件 ...

  9. Consul集群搭建

    一.集群搭建 准备三台机器 需要开启的端口,8300, 8301, 8500, 8600 机器1: 172.16.106.201 ./consul agent -server -bootstrap-e ...

  10. POJ 2860

    #include<iostream> #define MAXN 20 using namespace std; int a_1[MAXN]; int a_2[MAXN]; int main ...