跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作。

例如:请求http://x.com/del.php?id=1 是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击者把这个页面嵌套到其他网站中<img src=

“http://x.com/del.php?id=1”> 再把这个页面发送给管理员,只要管理员打开这个页面,同时浏览器也会利用当前登陆的这个管理账号权限发出:http://x.com/del.php?1d=1 这个请求,从而劫持此请求,利用管理员账户执行了一些操作。

危害:添加管理员账号、修改网络配置、直接写入webshell等

1、 挖掘经验

CSRF主要用于越权操作,因此多发生在有权限控制的地方。

黑盒挖掘:先搭建好环境,打开几个非静态页面,抓包看有没有token,如果没有,再直接请求这个页面,不带referer,如果返回数据还是一样的,那说明很有可能存在CSRF漏洞,

白盒挖掘:读取代码的核心文件,查看里边有没有验证token和referer相关的代码。或者直接搜索token这个关键字,再去看一下比较关心的功能点的代码有没有验证。

2、 漏洞防范

主流防范有两种:增加token/referer验证避免img标签请求的水坑攻击和增加验证码(影响用户体验)

(1)、利用token

Token实在页面或者cookie中插入一个不可预测的字符串,服务器验证token是否是上次留下的即可判断是不是可信请求;

Token实现代码:

通过MD5当前时间加上(1,1000)的随机数生成token,然后检查是否有token;

抓包,发现没有token,返回结果faild;

生成token值,发送返回结果success;

(2)、验证码实现

验证码没token那么实用,用户体验较差,所以这一种方式只能用在敏感操作的页面,利用登录页面等。

CSRF 漏洞原理详解及防御方法的更多相关文章

  1. SSTI服务端模板注入漏洞原理详解及利用姿势集锦

    目录 基本概念 模板引擎 SSTI Jinja2 Python基础 漏洞原理 代码复现 Payload解析 常规绕过姿势 其他Payload 过滤关键字 过滤中括号 过滤下划线 过滤点.(适用于Fla ...

  2. 解决ajax跨域的方法原理详解之Cors方法

    1.神马是跨域(Cross Domain)   对于端口和协议的不同,只能通过后台来解决.   一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是 跨域问题了.而为什么开 ...

  3. PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等

    页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...

  4. [转]js中几种实用的跨域方法原理详解

    转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...

  5. CSRF漏洞原理说明与利用方法

    翻译者:Fireweed 原文链接:http://seclab.stanford.edu/websec/ 一 .什么是CSRF Cross-Site Request Forgery(CSRF),中文一 ...

  6. CSRF漏洞原理浅谈

    CSRF漏洞原理浅谈 By : Mirror王宇阳 E-mail : mirrorwangyuyang@gmail.com 笔者并未深挖过CSRF,内容居多是参考<Web安全深度剖析>.& ...

  7. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  8. I2C 基础原理详解

    今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...

  9. 块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

    CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inli ...

随机推荐

  1. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. PHP-CPP开发扩展(六)

    PHP-CPP是一个用于开发PHP扩展的C++库.本节讲解在C++中PHP异常.变量.常量的实现相关知识. 异常 PHP和C++都支持异常,而PHP-CPP库这两种语言之间的异常处理是完全透明的.你在 ...

  3. Jmeter配置通过SSH连接的mysql数据库

    jmeter连接配置mysql数据库时,如果数据库服务器没有通过ssh连接,则只需要添加配置相应的jdbc参数就可以了.如果数据库服务器是通过SSH连接的,则需要通过中间远程连接工具来登录,此处使用的 ...

  4. loadrunner:Action.c(4): Error -27796: Failed to connect to server "192.168.66.3:8080": [10060] Connection timed out

    Action.c(4): Error -27796: Failed to connect to server "192.168.66.3:8080": [10060] Connec ...

  5. 模块,import,from xxx import xxx

    一,模块 模块就是一个包含了python定义和声明的文件,文件名就是模块的名字加上.py后缀,总体来说,import加载的模块一共分成四个通用的类别: 1,使用python编写的py文件 2,已被变异 ...

  6. httpclient请求服务的各种方法实例

    <!--话不多说,直接上代码--> import com.csis.ConfigManagerimport com.csis.io.web.DefaultConfigItemimport ...

  7. github-SSH模式如何配置秘钥clone远程仓库以及分支切换

    一.ssh模式clone 恕我无知,之前使用git命令都是https模式,该模式每次push都需要输入账号和密码,而且速度会根据的网速的快慢而定. 近日电脑重装了系统,在用SSH模式clone远程仓库 ...

  8. [简记] github 上的 GraphQL v4 API

    突发奇想,想用github做一个支持rss的blog体系,或者就是知识管理体系,简单看了下,把测试用的暂存起来 # Type queries into this side of the screen, ...

  9. java程序的加载与执行

    1.编写java源文件   .java 2.生成字节码文件   类名.class 3.JRE,java运行环境,包括JVM(java虚拟机).java基本类库 4.

  10. css制作表格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...