CSRF跨站请求伪造***漏洞的原理及解决办法

CSRF,夸张请求伪造漏洞

漏洞的原理及修复方法

1.常见的触发场景

2.漏洞原理:浏览器同源策略

3.DEMO

4.漏洞危害

5.如何避免&修复漏洞

WEB

clinet server HTTP

GET POST

csrf漏洞

漏洞原理:

Server端接受到用户请求的时候,没有校验请求的来源(referer)是否是自己域的页面。

DEMO

浏览器同源策略:SOP

schema://hostname:post/url

origin.

http://www.baidu.com/

https//passport.baiud.com/login.jsp

js -> 非同源的资源

<img src="https//passport.baiud.com/a.jsp">

<script src>

CSRF漏洞的存在

---------------------------------------------------------------------------------

www-data@w:~/controller$ vim missionController.class.php

<?php

class missionController extends baseController{

public $var;

public function __construct(){

parent::__construct();

if($this->loged){

return;

}else{

header('Location: /index/php');

exit()

}

}

public function feedAction(){

$missionModel = new missionModel()'

$feeds = $missionModel->get();

$url = '/index.php?c=mission&a=feed';

$username = $this->username;

require('tpl/feed.tpl');

}

public function feedApiAction(){

$callback = request('callback');

$missionModel = new missionModel();

$feeds = $missionModel->getMost($this->id);

$feeds = json_encode(array('email'=>$this->username.'count'=>$feeds[0]));

echo $callback.'('.$feeds.')';

}

public function missionAddAction(){

$missionModel = new missionModel();

$missionUrl = request('missionUrl');

$missionContent = request('missionContent');

$missionModel->add($this->id,$this->username,$missionUrl,$missionContent);

$count = 1;

if($count >0){

$this->json(array('result'=>0,'message'=>'add mission ok'));

}else{

$this->json(array('result'=>1,'message'=>'add mission wrong'));

}

}

public function testAction(){

echo 'in';

}

public function add(){

$this->id;

}

---------------------------------------------------------------------------------

alert(document.domain);

var img = document.createElement('img')

img.src='http://paper.com/a.jsp';

p = document.getElementById('p');

p.appendChild(img);

GET /a.jsp HTTP/1.1

Host: paper.com

User-Agent: Mozilla/5.0 (Macintosh); Intel Mac OS X 10.9, rv:35.0) Gecko/20100101 Firefox/35.0

Accept: miage/png,p_w_picpath/*;q=0.8,*/*;q=0.5

Accept-Language: zh-cn,zh;q=0.8,en=us;q=0.5,en;q=0.3

Accept-Encoding: qzip, deflate

Refere: http://csrf.com/csrf.html

Cookie: id=1 sessionid=8e8418a9326ca42dfe4499ac357171e2

Connection: keep-alive

HTTP/1.1 404 Not Found

Data: Sun, 08 Feb 2015 06:10:42 GMT

Server: Apache/2.2.22 (Debian)

Vary: Accept-Encoding

Content-Length: 278

Keep-Alive: timeout=5,max=100

Connection: Keep-Alive

Conntent-Type: text/html; charset-iso-8859-1

---------------------------------------------------------------------------------

root@w:~# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g

Your MySQL connection id is 230

Server version: 5.5.40-0+wheeyl-log (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliate. Other names my be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use security;

Reading table information for completion of table and column names

You can turn off this feature to get queciker startup with -A

Database changed

mysql> show tables

-> ;

+---------------------+

| Tables_in_security  |

+---------------------+

| emails              |

| mission             |

| referes             |

| uagents             |

| userinfo            |

| users               |

+---------------------+

6 rows in set (0.00 sec)

mysql> truncate mission;

Query OK, 0 rows affeted (0.03 sec)

mysql> select * from mission;

Empty set (0.00 sec)

漏洞危害:

CSRF:在用户不知不觉的情况下,对网站发起请求,伪造用户行为,比如发表文章、删帖等,

漏洞修复:

一:校验请求的referer;

二:在请求中携带随机化参数,让请求不可预测。

Get /index.php?c=mission&a=missionAdd&missionUrl=aaa&missionContent=aaa HTTP/1.1

Host paper.com

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: p_w_picpath/png,p_w_picpath/*;q=0.8,*/*,q=0.5

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://scrf.com/csrf.html

Cookie: id=1; sessionid=8e8418a9326ca42dfe4499ac357171e2

Connwxrion: keep-alive

token: 随机化参数

---------------------------------------------------------------------------------

missionController.class.php

<?php

class missionController extends baseController{

public $var;

public function __construct(){

parent::__construct();

if($this->loged){

return;

}else{

header('Location: /index/php');

exit()

}

}

public function feedAction(){

$missionModel = new missionModel()'

$feeds = $missionModel->get();

$url = '/index.php?c=mission&a=feed';

$username = $this->username;

require('tpl/feed.tpl');

}

public function feedApiAction(){

$callback = request('callback');

$missionModel = new missionModel();

$feeds = $missionModel->getMost($this->id);

$feeds = json_encode(array('email'=>$this->username.'count'=>$feeds[0]));

echo $callback.'('.$feeds.')';

}

public function missionAddAction(){

$referer = $_SERVER['HTTP_REFERER'];

$hostname = parse_url($referer,PHP_URL_HOST);

if($hostname !== 'paper.com'){

exit();

}

$missionModel = new missionModel();

$missionUrl = request('missionUrl');

$missionContent = request('missionContent');

$missionModel->add($this->id,$this->username,$missionUrl,$missionContent);

$count = 1;

if($count >0){

$this->json(array('result'=>0,'message'=>'add mission ok'));

}else{

$this->json(array('result'=>1,'message'=>'add mission wrong'));

}

}

public function testAction(){

echo 'in';

}

public function add(){

$this->id;

}

---------------------------------------------------------------------------------

校验referer存在的缺陷:

1:htpps->http

浏览器会因为隐私的问题,不发送referer.

1.tricks->不发送referer

添加token存在的问题:

1.成本高,

->在head里面种一个token,降低成本,

2.当前请求为非法请求,

->服务器重新给页面中一个token,

->第一个标签中的token,还是以前的token

安全性<->易用性做一个平衡

在head中种植一个token,并且设置这个token的有效期为一个较长的时间,

discuz  formhash

该笔记为安全牛课堂学员笔记,想看此课程或者信息安全类干货可以移步到安全牛课堂

Security+认证为什么是互联网+时代最火爆的认证?

牛妹先给大家介绍一下Security+

Security+ 认证是一种中立第三方认证,其发证机构为美国计算机行业协会CompTIA ;是和CISSP、ITIL 等共同包含在内的国际 IT 业 10 大热门认证之一,和CISSP偏重信息安全管理相比,Security+ 认证更偏重信息安全技术和操作。

通过该认证证明了您具备网络安全,合规性和操作安全,威胁和漏洞,应用程序、数据和主机安全,访问控制和身份管理以及加密技术等方面的能力。因其考试难度不易,含金量较高,目前已被全球企业和安全专业人士所普遍采纳。

Security+认证如此火爆的原因?

原因一:在所有信息安全认证当中,偏重信息安全技术的认证是空白的, Security+认证正好可以弥补信息安全技术领域的空白 。

目前行业内受认可的信息安全认证主要有CISP和CISSP,但是无论CISP还是CISSP都是偏重信息安全管理的,技术知识讲的宽泛且浅显,考试都是一带而过。而且CISSP要求持证人员的信息安全工作经验都要5年以上,CISP也要求大专学历4年以上工作经验,这些要求无疑把有能力且上进的年轻人的持证之路堵住。在现实社会中,无论是找工作还是升职加薪,或是投标时候报人员,认证都是必不可少的,这给年轻人带来了很多不公平。而Security+的出现可以扫清这些年轻人职业发展中的障碍,由于Security+偏重信息安全技术,所以对工作经验没有特别的要求。只要你有IT相关背景,追求进步就可以学习和考试。

原因二: IT运维人员工作与翻身的利器。

在银行、证券、保险、信息通讯等行业,IT运维人员非常多,IT运维涉及的工作面也非常广。是一个集网络、系统、安全、应用架构、存储为一体的综合性技术岗。虽然没有程序猿们“生当做光棍,死亦写代码”的悲壮,但也有着“锄禾日当午,不如运维苦“的感慨。天天对着电脑和机器,时间长了难免有对于职业发展的迷茫和困惑。Security+国际认证的出现可以让有追求的IT运维人员学习网络安全知识,掌握网络安全实践。职业发展朝着网络安全的方向发展,解决国内信息安全人才的匮乏问题。另外,即使不转型,要做好运维工作,学习安全知识取得安全认证也是必不可少的。

原因三:接地气、国际范儿、考试方便、费用适中!

CompTIA作为全球ICT领域最具影响力的全球领先机构,在信息安全人才认证方面是专业、公平、公正的。Security+认证偏重操作且和一线工程师的日常工作息息相关。适合银行、证券、保险、互联网公司等IT相关人员学习。作为国际认证在全球147个国家受到广泛的认可。

在目前的信息安全大潮之下,人才是信息安全发展的关键。而目前国内的信息安全人才是非常匮乏的,相信Security+认证一定会成为最火爆的信息安全认证。

转载于:https://blog.51cto.com/11672938/1975392

【安全牛学习笔记】CSRF跨站请求伪造***漏洞的原理及解决办法相关推荐

  1. CSRF(跨站请求伪造)漏洞

    CSRF(Cross-site request forgery) 跨站请求伪造,由客户端发起,是一种劫持受信任用户向服务器发送非预期请求的攻击方式,与XSS相似,但比XSS更难防范,常与XSS一起配合 ...

  2. 漏洞解决方案-跨站请求伪造漏洞

    跨站请求伪造漏洞CSRF 跨站请求伪造漏洞CSRF 一.问题描述: 二.整改建议: 三.案例: 1. 客户端进行CSRF防御 2. 服务端进行CSRF防御 跨站请求伪造漏洞CSRF 一.问题描述: C ...

  3. 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法

    CSRF跨站请求伪造攻击漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修复 ...

  4. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结

    转载:https://blog.csdn.net/baidu_24024601/article/details/51957270 XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结. <di ...

  5. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结。

    之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让自己在接下来的面试有个清晰的概念. XSS跨站脚本攻击: xss 跨站脚本攻击(Cross Site Scripting),为了不和 ...

  6. Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)

    摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于 ...

  7. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...

    python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...

  8. CSRF 跨站请求伪造 为什么b网站请求a网站的地址能带上a网站的cookie

    知道csrf后的问题:CSRF 跨站请求伪造 为什么b网站请求a网站的地址能带上a网站的cookie 答:script.image.iframe的src都不受同源策略的影响.

  9. 8中间件,csrf跨站请求伪造,auth模块

    昨日内容回顾  多对多三种创建方式   1.全自动    完全依赖于ManyToMany让django orm自动创建第三张表    优势:不需要你创建第三张表  自动创建    不足:第三张表扩展性 ...

最新文章

  1. Nginx 挂了怎么办?怎么实现高可用?
  2. 如何在公司局域网内访问不同网段的主机
  3. js call(),apply(),对象冒充,改变变量作用域
  4. 张左峰的歪理邪说 之 大话Redmine插件
  5. linux中shell自动对齐代码,linux – Shell编程 – 如何printf像表一样对齐我的输出?...
  6. Fragment与Activity传递数据
  7. 3004基于二叉链表的二叉树的双序遍历(附题意解释)
  8. 软件测试2019:第七次作业
  9. 概率论与数理统计图解
  10. php网页抓取浏览者手机号码_php 获取 手机浏览器的信息 获取手机号
  11. netware php_服务器_如何在 Netware 服务器中安装多块网卡,如果网络在扩大时服务器只装 - phpStudy...
  12. 非计算机,如何学习计算机视觉
  13. 【运营】关于A/BTest的简单介绍
  14. 对讲机有哪些?如何选购对讲机?
  15. amigo幸运字符什么意思_QQ有什么魅力?为什么00后都喜欢?细节都在这些“标识”里...
  16. Unity Shader入门精要第七章 基础纹理之遮罩纹理
  17. 基于Java/Mysql的个人博客网站
  18. 《流浪地球》影评数据爬取分析
  19. 【Vue.JS】纯 Vue.js 制作甘特图
  20. mLife | 朱永官院士提出生态系统微生物组学

热门文章

  1. 中小企业数字化,平安涉足政企的切口
  2. 实验室信息化LIMS如何采集实验室仪器设备数据?
  3. wordpress插件使用教程 – 使用Google Language Translator 实现网站多语言在线翻译
  4. 【Java SE】JDK 8 以往版本
  5. shell脚本——shell函数详解
  6. haxe 第二期 入门篇 (转载)
  7. 归一化 Normalization/标准化 Standardization/中心化 Zero-centered 逻辑及应用场景
  8. 第二篇章 引导程序head.s
  9. ArcMap绘图,根据两个属性信息分别确定符号大小和颜色
  10. 羊车门问题的python代码_羊车门问题(Python)