Django之CSRF防护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、CSRF是什么?
  • 二、CSRF防护机制
    • 防护原理简介
    • csrf防护函数相关介绍
    • csrf防护的一些补充
  • 每日一图


一、CSRF是什么?

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF,这是一种对网站的恶意利用,窃取网站用户信息来制造恶意请求。

二、CSRF防护机制

Django为了防护这类攻击,在用户提交表单时,表单会自动加入csrfmiddlewaretoken隐藏控件。这个控件值会与网站内的csrfmiddlewaretoken值进行匹配,匹配成功,网站才会处理表单数据。

防护原理简介

  1. 在用户访问网站时,网页表单中有一个隐藏控件csrfmiddlewaretoken,控件值由Django随机生成
  2. 提交表单验证表单隐藏控件值是否与Django保存的值一致

csrf防护函数相关介绍

  • 在HTML网页form表单中添加内置标签csrf_token可以实西安CSRF防护
  • 装饰器@csrf_exempt,取消某个视图函数的CSRF防护
  • 装饰器@csrf_protect,对某个视图函数开启CSRF防护【如果取消整个·网站的CSRF防护(注释settings的MIDDLEWARE的CSRF中间件),但又想对个别视图进行防护可用@csrf_protect】

csrf防护的一些补充

  • CSRF防护只适用于POST请求,并不防护GET请求。GET请求是以读写的方式访问网站资源的,一般不涉及网站数据的修改。

每日一图

Django之CSRF防护_第1张图片

你可能感兴趣的:(Django,python,django)