django16: csrf跨站请求伪造/CSRF相关装饰器

CSRF

即跨站请求攻击

跨站请求伪造csrf钓鱼网站本质搭建一个跟正常网站一模一样的页面用户在该页面上完成转账功能转账的请求确实是朝着正常网站的服务端提交唯一不同的在于收款账户人不同给用户书写form表单 对方账户的input没有name属性你自己悄悄提前写好了一个具有默认的并且是隐藏的具有name属性的input模拟钓鱼网站

 

form表单中csrf校验

<form action="" method="post">{% csrf_token %}old_password:<input type="text" name="old_password">new_password:<input type="text" name="new_password"><input type="submit"></form>

 

AJAX csrf校验

第一种方式:自己手动获取

$('#d1').click(function () {$.ajax({url:'',type:'post',// 第一种方式 自己手动获取
data:{'username':'jason','csrfmiddlewaretoken':$('input[name="csrfmiddlewaretoken"]').val()},success:function (data) {alert(data)}})})

第二种方式:利用模板语法

$('#d1').click(function () {$.ajax({url:'',type:'post',// 第二种方式 利用模板语法data:{'username':'jason','csrfmiddlewaretoken':'{{ csrf_token }}'},success:function (data) {alert(data)}})})

第三种方式:通用方式 引入外部js文件 官网提供的方式

$('#d1').click(function () {$.ajax({url:'',type:'post',##<script src="{% static 'myset.js' %}"></script>success:function (data) {alert(data)}})})

js文件拷贝:配置在静态文件中

function getCookie(name) {var cookieValue = null;if (document.cookie && document.cookie !== '') {var cookies = document.cookie.split(';');for (var i = 0; i < cookies.length; i++) {var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) === (name + '=')) {cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;}}}return cookieValue;
}
var csrftoken = getCookie('csrftoken');function csrfSafeMethod(method) {// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}$.ajaxSetup({beforeSend: function (xhr, settings) {if (!csrfSafeMethod(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken);}}
});

 

CSRF相关装饰器

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.utils.decorators import method_decorator@csrf_exempt  # 不校验csrf
@csrf_protect # 校验

使用方法

在视图函数头上装


# @csrf_exempt  # 不校验csrf
# @csrf_protect # 校验, 先注释中间件scrf
def transfer(srequest):return HttpResponse('transfer')

CBV 只能在dispatch加

 

class MyHome(View): @method_decorator(csrf_protect)  # 第三种 类中所有的方法都装def dispatch(self, request, *args, **kwargs):return super().dispatch(request,*args,**kwargs)def post(self,request):return HttpResponse('post')def get(self,request):return HttpResponse('get')

 

 

 

参考:https://www.cnblogs.com/guyouyin123/p/12194181.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dropbox_Google的新存储定价与Microsoft,Apple和Dropbox相比如何

dropboxGoogle’s subscription storage service has a new name: Google One. Some prices are dropping and customers will also get customer support from an actual human for the first time. Google的订阅存储服务有一个新名称&#xff1a;Google One。 一些价格正在下…

WPF效果第二百零六篇之快速黑白灰效果

一大早就看到群友讨论怎么快速让界面黑白灰效果,这不突然想起来N年前咱简单通过ShaderEffects调节过饱和度、对比度、亮度;今天再次玩耍一下;来看看最终实现的效果:1、核心代码&#xff1a;sampler2D implicitInput : register(s0); float factor : register(c0); float4 main(…

极大似然估计与贝叶斯定理

文章转载自&#xff1a;https://blog.csdn.net/zengxiantao1994/article/details/72787849 极大似然估计-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/24124998 贝叶斯定理-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/19725590/answer/…

艾媒:第三方应用商店形成BAT3争霸格局

iiMedia Research(艾媒咨询)近日发布的《2016Q2中国移动应用商店市场监测报告》&#xff0c;报告显示&#xff0c;2016年第二季度&#xff0c;第三方移动应用商店用户增长放缓&#xff0c;用户规模逐渐饱和。同时&#xff0c;随着豌豆荚宣布并入阿里移动事业群&#xff0c;中国…

编译安装内核

编译安装内核 升级内核到 linux-4.20.3.tar.xz 查看当前内核版本&#xff1a; [rootcentos7 data]#uname -r 3.10.0-862.el7.x86_64获取内核源代码包&#xff1a;www.kernel.org linux-4.20.3.tar.xz 实施步骤 1. 安装编译所需的工具 gcc ncurses-devel make&#xff08;开发工…

layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知

layui 启用禁用iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You can disable them, but the option is hidden. iPhone / iPad&#xff1a;对Apple Pay不感兴趣&#xff0c;又厌倦了看到有关它的通知&#xff1f; 您可以禁用它们…

数字孪生项目实战,WPF与Unity结合开发之路(一)

数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;作 者&#xff1a;水娃嗨大家好&#xff0c;我是一名骨灰级的WPF开发者&#xff0c;我叫水娃。这次主要是向大…

django17:importlib应用中间件代码思想

转载&#xff1a;https://www.cnblogs.com/alice-bj/articles/9276880.html 背景 仿django的中间件的编程思想 用户可通过配置&#xff0c;选择是否启用某个组件/某个功能&#xff0c;只需要配置 eg:报警系统&#xff0c;发邮件&#xff0c;发微信 。。。 ( 根据字符串导入…

Python 全栈开发基础

python面向对象 python异常处理 python网络编程 python并发编程 临时目录 转载于:https://www.cnblogs.com/fixdq/p/8883304.html

IBM连续两年大数据市场占有率全球第一

ZDNet至顶网服务器频道 04月22日 新闻消息:IBM 近日宣布&#xff0c;根据市场调研机构Wikibon最新研究报告《大数据供应商收益与市场预测》&#xff0c;IBM连续两年实现大数据市场占有率第一&#xff0c;领跑报告中的70多家大数据供应商。同期&#xff0c;IBM年度报告也显示&am…

idou老师教你学Istio06: 如何用istio实现流量迁移

流量迁移是流量管理的一个重要功能。istio提供的流量管理功能将流量从基础设施扩展中解耦&#xff0c;支持动态请求路由&#xff0c;故障注入、超时重试、熔断和流量迁移等。流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本&#xff0c;如在新旧版本之间进…

用最少的代码,写一个完整MES项目(.NET6+WPF)

工业4.0时代&#xff0c;智能智造MES系统大行其道&#xff0c;然而基于.NET跨平台的罕见&#xff01;这里有一套《.NET6WPF企业级MES实战》教程&#xff0c;基于.NET6跨平台开发&#xff0c;实现了MES多核心功能&#xff0c;尤其是开发框架完整&#xff0c;非常适合复用。这里分…

django18:auth模块

Auth模块 执行数据库迁移命令后&#xff0c;自动生产多个表。 django_session auth_user 直接访问admin路由&#xff0c;需要输入用户名和密码&#xff0c;就是参考auth_user表 管理员用户才能进入 创建超级用户 createsuperuser from django.contrib import auth1.校验用…

hulu dpp_什么是直播电视的Hulu,它可以代替您的有线电视订阅吗?

hulu dppStreaming cable replacements are becoming a much more appealing option for cable cutters across the board, with more choices available than ever before. Hulu’s Live TV option is a relative newcomer to the scene, but is it worth it? 对于全系列的电…

suse linux ssh远程无法访问问题

当正常安装完Suse Linux Enterprise Server 11 sp1 时&#xff0c;无法通过SecureCRT或者PuTTY之类的终端程序进行连接。 折腾了一下&#xff0c;发现问题所在&#xff1a; 1、 需要关闭防火墙&#xff0c;如下图在YAST里可以关闭&#xff0c;也可以使用下面命令行的方式&…

4.Linux的目录结构

Linux的目录结构 (1)"/"目录 Linux文件系统的入口&#xff0c;也是出于最高一级的目录 (2)"/bin" 基础系统所需要的那些命令位于此目录。也是最小系统所需要命令&#xff1b;比如ls、cp、mkdir等命令&#xff1b;功能和/usr/bin类似&#xff0c;这个目录中…

Jade —— 源于 Node.js 的 HTML 模板引擎

2013-12-11 发布Jade —— 源于 Node.js 的 HTML 模板引擎 开源项目介绍 web 模板引擎 node.js jade 207.8k 次阅读 读完需要 69 分钟54Jade 是一个高性能的模板引擎&#xff0c;它深受 Haml 影响&#xff0c;它是用 JavaScript 实现的&#xff0c;并且可以供 Node…

诈骗者如何伪造电子邮件地址,以及如何分辨

Consider this a public service announcement: Scammers can forge email addresses. Your email program may say a message is from a certain email address, but it may be from another address entirely. 考虑这是一项公共服务公告&#xff1a;诈骗者可以伪造电子邮件地…

如何对整个 WPF 应用程序进行灰度

如何对整个 WPF 应用程序进行灰度控件名&#xff1a;GrayscaleEffect作 者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接[1]&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers 简易源码[2]框架使用.NET40&#xff1b;Visual Studio 2019;如果要实现灰度第一反是…

django19:项目开发流程

参考&#xff1a;https://www.bilibili.com/video/BV1QE41147hU?p831&spm_id_frompageDriver