CSRF简介

CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

CSRF示意图如下:

如果想防止CSRF,首先是重要的信息传递都采用POST方式而不是GET方式,接下来就说POST请求的攻击方式以及在Django中的避免。

防止CSRF

1.Django提供了csrf中间件用于防止CSRF攻击,只需要在test4/settings.py中启用csrf中间件即可。

2.也可以在from表单后添加 {% csrf_token %}  ,也是可以防止csrf攻击的

保护原理

实际是在from表单的后面会生成一传value属性的值,一段字符串

说明:当启用中间件并加入标签csrf_token后,会向客户端浏览器中写入一条Cookie信息,这条信息的值与隐藏域input元素的value属性是一致的,提交到服务器后会先由csrf中间件进行验证,如果对比失败则返回403页面,而不会进行后续的处理。

登录装饰器

def login_required(view_func):'''登录判断装饰器'''# view_args位置参数(接收位置参数),view_kwargs关键字参数(接收关键字参数)def wrapper(request,*view_args,**view_kwargs):# 判断用户是否登录if request.session.has_key("islogin"):# 用户已登录view_func(request,*view_args,**view_kwargs)else:# 用户未登录return redirect("/login")  # 跳转到登录视图函数return wrapper

用的时候可以直接给视图函数直接  使用  @login_required

Django框架(26.Django中的CSRF以及登录装饰器)相关推荐

  1. Django框架之CBV类视图及类视图装饰器

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  2. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  3. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))

    捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定   ...

  4. Django框架(24.Django中的模板的自定义过滤器)

    自定义过滤器 过滤器就是python中的函数,注册后就可以在模板中当作过滤器使用 Django中的使用模板的自定义过滤器 在项目的应用下创建templatetags​​​​​​的Python的包 然后 ...

  5. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)

    为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...

  6. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  7. Django框架(1.Django框架的简介)

    Django简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计. 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005 ...

  8. django 使用系统自带登录装饰器login_required

    限制用户没有登录就不能访问,就是用这个装饰器,当用户点击用户视图的时候,装饰器会先跳转到登录页面,在url后面增加一个next字段,等到用户登录成功之后,在跳转到先前用户访问的页面 from djan ...

  9. Django 基础(6)-路由Routers-SimpleRouter-DefaultRouter、 action装饰器、URL路径参数

    文章目录 一.路由Routers 工作常见问题总结 提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn't end ...

最新文章

  1. Nat. Commun. 速递:虚拟颅内脑电与神经动力学模型
  2. k-d tree算法
  3. Python的C/C++扩展
  4. utf8 bom 去掉 java_utf-8-BOM删除bom
  5. ajax请求php返回的数据是整个页面的html,Ajax出错并返回整个页面html的问题
  6. .NET Framework 4.5 五个很棒的特性
  7. python 多线程读写文件错误_python多线程老是报错。大神帮忙看看哈?
  8. 审计署计算机培训心得体会,审计署计算机中级培训心得体会2018
  9. Java JUC工具类--Master-Worker
  10. php png 输出,PHP直接输出一张图片代码写法
  11. matlab from有什么用,Matlab函数使用'fromworkspace'将向量传递给simulink
  12. eclipse 使用 maven 无法编译 jsp 文件的问题
  13. c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数
  14. .NET 环境中使用RabbitMQ(转)
  15. 如何在Mac电脑上自定义Spotlight的搜索结果?
  16. powerapps简介
  17. 萤石云 android,Android-再次解读萤石云视频
  18. 开源项目--阿里巴巴腾讯Google
  19. 2、智慧变电站 - 地面、围墙绘制及动态贴图
  20. 柠萌影业三次冲刺IPO,爆款制造机的压力大爆了

热门文章

  1. android 同步执行方法吗,Android异步方法以同步方式实现
  2. python 化学结构_PyOrganic
  3. java耗时操作阻塞_springboot~高并发下耗时操作的实现
  4. java对称加密,java异或加密,Java高性能对称加密
  5. MySQL中count方法和sum方法查询条件错误时返回结果
  6. 《移动项目实践》实验报告——Android Studio环境搭建
  7. uniCloud云函数——微信小程序登录凭证校验[code2Session](即:使用 code 换取 openid 和 session_key 等信息)解决方案
  8. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——自编解析与答案
  9. HTML/CSS——form表单select联动(JavaScript方法)
  10. 按某列获取几行_机器学习获取数据难?别忘记特征工程