详解Django中CSRF和CORS的区别

作者:YZL40514131 时间:2021-02-19 19:16:51 

一、CSRF:保护机制

Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下:

1、在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值

2、当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,来判断用户的合法性

3、当用户被csrf攻击从其他站点发送精心编制的攻击请求时,由于其他站点不可能知道隐藏的csrftoken字段的信息这样在服务器端就会校验失败,攻击被成功防御

二、CORS:跨域访问

举例:前端和后端分别是两个不同的端⼝

前端:127.0.0.1:8081
后端:192.168.17.129:8880

现在,前端与后端分别是不同的端⼝,这就涉及到跨域访问数据的问题,因为浏览器的同源策略,默认是不⽀持两个不同域名间相互访问数据,⽽我们需要在两个域名间相互传递数据,这时我们就要为后端添加跨域访问的⽀持。

django后端设置:

1、使用django-cors-headers扩展 a、安装

pip install django-cors-headers

b、添加子应用

INSTALLED_APPS = [
...
'corsheaders',
...
]

c、中间件配置

MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...
]

d、添加白名单

# 设置CORS⽩名单
CORS_ORIGIN_WHITELIST = (
'http://127.0.0.1:8081',
'http://127.0.0.1:8080',
'http://localhost:8080',
'http://www.nagle.cn:8080',
'http://api.nagle.cn:8083',
)

CORS_ALLOW_CREDENTIALS = True # 允许携带cookie

凡是出现在⽩名单中的域名,都可以访问后端接⼝CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否⽀持对cookie的操作。

2、跨域实现流程 a、浏览器会第一次先发送OPTIONS请求询问后端是否允许跨域,后端查询白名单中是否有这个域名 b、如果域名在白名单列表中则响应结果中告知浏览器允许跨域 c、浏览器第二次发送POST请求,携带用户登录数据到后端,完成登录验证操作

详解Django中CSRF和CORS的区别

详解Django中CSRF和CORS的区别

来源:https://blog.csdn.net/YZL40514131/article/details/126110807

标签:Django,CSRF,CORS
0
投稿

猜你喜欢

  • Flask 使用类组织配置详情

    2023-06-15 02:31:30
  • IE中雅黑字体给布局带来的变化

    2008-06-13 11:22:00
  • 详解JavaScript 高阶函数

    2024-04-18 09:30:14
  • 小程序登录/注册页面设计的实现代码

    2024-04-18 09:44:10
  • python获取当前文件路径以及父文件路径的方法

    2022-07-02 14:06:00
  • python进度条显示之tqmd模块

    2021-09-29 22:44:36
  • ASP隐藏真实文件的下载功能实现代码

    2011-04-14 11:12:00
  • FrontPage2002简明教程五:css样式表的应用

    2008-09-17 11:31:00
  • Python实现PDF转MP3的示例代码

    2021-08-07 21:21:06
  • Python学习之私有函数,私有变量及封装详解

    2022-05-28 13:47:15
  • js实现炫酷的左右轮播图

    2024-04-22 22:31:40
  • python 利用pandas将arff文件转csv文件的方法

    2021-05-31 05:49:34
  • 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用

    2024-05-11 09:54:56
  • python没有gpu,如何改用cpu跑代码

    2022-09-26 00:24:49
  • Python面向对象之静态属性、类方法与静态方法分析

    2021-03-28 15:14:22
  • Go之集合slice的实现

    2024-04-26 17:33:06
  • 详解JS深拷贝与浅拷贝

    2024-05-22 10:40:40
  • Yahoo!网站性能最佳体验的34条黄金守则——图片、Coockie与移动应用

    2008-05-29 13:44:00
  • ASP.NET对SQLServer的通用数据库访问类

    2024-01-23 19:21:20
  • Vue父子组件传值的一些坑

    2024-04-28 09:30:57
  • asp之家 网络编程 m.aspxhome.com