码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Django面试题——CSRF和CORS的区别


    在这里插入图片描述

    一、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
    
    • 1

    b、添加子应用

    INSTALLED_APPS = [ 
    	... 
    	'corsheaders', 
    	...
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    c、中间件配置

    MIDDLEWARE = [ 
    	'corsheaders.middleware.CorsMiddleware',
    	 ...
     ]
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    2、跨域实现流程

    a、浏览器会第一次先发送OPTIONS请求询问后端是否允许跨域,后端查询白名单中是否有这个域名

    b、如果域名在白名单列表中则响应结果中告知浏览器允许跨域

    c、浏览器第二次发送POST请求,携带用户登录数据到后端,完成登录验证操作

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    算法训练营一刷 总结篇
    Android 13 第一个开发者预览版本来了,网友直呼:Android 12 还没透
    HTML小游戏6 —— 《高达战争》横版射击游戏(附完整源码)
    sql多表查询,嵌套查询,函数查询
    pdf转jpg的方法【ps和工具方法】
    k8s容器集群管理
    vue3项目的创建、入口文件、全局方法、生命周期函数、setup中的生命周期函数使用、data的函数方式
    深度学习基础——残差神经网络(ResNet)
    Linux安装Mysql详细教程(两种安装方法)
    【源码+课程】Java精选课程_Java基础课程_名师讲解,从入门到精通,只需这一套课程_Java300集_附Java最全学习路线图和就业分析_持续更新中
  • 原文地址:https://blog.csdn.net/YZL40514131/article/details/126110807
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号