django CXRF介绍

CSRF(Cross-site request forgery)跨站请求伪造,是攻击者利用用户的身份操作用户帐户的一种攻击方式。和XSS攻击一样,存在巨大的危害性。

一、攻击方法

1、低级的CXRF攻击

A、加关注的GET接口,blogUserGuid参数明显是被关注人Id,具有登陆态的用户可以关注blogUserGuid对应的用户

  http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUserGuid=4e8c33d0-77fe-df11-ac81-842b2b196315

B、攻击办法:

  攻击者在一篇博文内容里面写一个img标签:

  <img style="width:0;" src="http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUserGuid=4e8c33d0-77fe-df11-ac81-842b2b196315" />

  被攻击者在具有登陆态的情况下,在同一个浏览器访问加img标签的博文,调用了关注接口,被动关注了blogUserGuid对应的用户

2、中级的CXRF攻击

上述的攻击可以通过将接口改成post方法的方式规避;

  针对post方法,攻击方法如下:第三方的页面也可以使用包含form表单用于提交请求,如下,访问包含了这些代码的页面,同样被动调用接口

  

二、防御方法

现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)。 CSRF的Token仅仅用于对抗CSRF攻击。当网站同时存在XSS漏洞时候,那这个方案也是空谈。所以XSS带来的问题,应该使用XSS的防御方案予以解决。

三、django中的CXRF使用

1、django使用一个Token(Anti CSRF Token)通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成,在setting文件中设置,一旦设置了这个中间件,html页面的form/ajax方式访问view中的函数,都需要传递Token(Anti CSRF Token)

2、html页面的form/ajax方式访问view中的函数传递Token(Anti CSRF Token)的方式

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title></head><body>    <!-- form 提交数据产生csrf-token方式 {% csrf_token %}--->    <form action="/ss" method="post">        {% csrf_token %}        <input type="text" name="user"/>        <input type="text" name="pwd"/>        <input type="submit"  value="提交"/>    </form>

<!-- ajax提交数据--->    <input type="button" onclick="Do();"  value="Do it"/>    <!--引入jquery和jquery.cookie--->    <script src="/static/plugin/jquery/jquery-1.8.0.js"></script>    <script src="/static/plugin/jquery/jquery.cookie.js"></script>

<!-- ajax 提交数据,设置csrf-token方式  xhr.setRequestHeader("X-CSRFToken", csrftoken);--->    <script type="text/javascript">        var csrftoken = $.cookie(‘csrftoken‘);        function csrfSafeMethod(method) {            // these HTTP methods do not require CSRF protection            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));        }        $.ajaxSetup({            beforeSend: function(xhr, settings) {                if (!csrfSafeMethod(settings.type) && !this.crossDomain) {                    xhr.setRequestHeader("X-CSRFToken", csrftoken);                }            }        });        function Do(){            $.ajax({                url:"/app01/test/",                data:{id:1},                type:‘POST‘,                success:function(data){                    console.log(data);                }            });

}    </script></body></html>

原文地址:https://www.cnblogs.com/yoyo008/p/9419162.html

时间: 2024-10-12 18:23:19

django CXRF介绍的相关文章

第三百零三节,Django框架介绍

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. Django框架,流程图

2、Django框架介绍

ü  Django是采用类似于MVC的MTV模式进行WEB开发. ü  核心100%是用python编写 ü  项目开发需要的知识有:python基础知识.面向对象.MVC/MTV.数据库(主要是ORM模式).html. 2.1.Django框架模式 Django的主要目的是简便.快速地开发数据库驱动的网站——动态网站.它强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,因此它有许多功能强大的第三方插件.Django强调快速开发,用Django开发一个Web网站非常迅速. http:

Django框架介绍

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 更多Django框架http://code.ziqiangxuetang.com/django/django-qrcode.htm

一 Django框架介绍——用pycharm创建Django项目

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 更多Django框架http://code.ziqiangxuetang.com/django/django-qrcode.htm

Django:介绍Django

一.介绍Django 1.Diango一个高效的web框架,以最小代码构建和维护高质量web应用: 2.减少重复代码,专注于Web应用上关键的东西: 二.框架是什么 1.不使用框架设计Python网页应用程序,原始直接的办法是使用CGI标准: 2.首先做一个Python脚本,输出HTML代码,保存成.cgi扩展名的文件,通过浏览器访问此文件: #!/usr/bin/env python import MySQLdb print "Content‐Type: text/html\n" p

测试开发之Django——No1.介绍以及引申

前言 > 测试行业发展飞速,自动化测试兴起,由此对测试人员的要求与日俱增.随时而来的,就是职能的增加. > 首先需要学习的,就是自动化测试.而由自动化测试引申而来的,就是另外几个新增的岗位:自动化测试工程师.测试开发工程师.测试架构工程师.作为测试人员,学习的内容也越来越多 > 除了大家需要学会编程能力外,还需要具备的一点,就是对测试平台的开发或维护,这里有些同学就要不明白了.既然有自动化测试工程师,为什么很多公司都不会去开展自动化测试. > 原因很简单,维护成本太大. >

Django框架介绍 python三大主流web框架之一

一.学习准备 1.下载安装Django(建议安装1.x版本) 方法:终端cmd输入命令:pip install django==1.11.11  然后回车即可 校验是否安装成功:django-admin 二.纯手撸web框架 1.纯手撸web框架 软件开发架构 c/s架构 b/s架构 本质bs也是cs web后端 需求: 1.根据用户输入不同的后缀返回不同的内容 从符合http协议格式的数据中获取用户输入的后缀 不足之处: 1.socket代码是我们自己写的 2.http数据也是我们自己处理的

Django的介绍

Django是一个开放源代码的Web应用框架,由Python写成. Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 一流的 URL 设计 设计者友好的模板语言 缓存系统. MVC模式 说到Web框架,我们都知道MVC模式,可以浅谈一下什么是MVC模式. 把数据存取逻辑.业务 逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller(MVC)模式. Model 代表数据存取层, View 代表的是系统中选择显示什么和

django 信号介绍 1.11

Django中提供了"信号调度",用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者 1.Django内置信号 Model signals pre_init # django的modal执行其构造方法前,自动触发 post_init # django的modal执行其构造方法后,自动触发 pre_save # django的modal对象保存前,自动触发 post_save # django的modal对象保存后,自动触发 pre_dele