【Django网络安全】如何正确设置跨域

这篇具有很好参考价值的文章主要介绍了【Django网络安全】如何正确设置跨域。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。

Django网络安全

【Django网络安全】如何正确设置跨域
【Django网络安全】如何正确防护CSRF跨站点请求伪造



一、同源策略

同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源, 即协议不同,域名不同或者端口不同的都是非同源的

浏览器只阻止表单以及 ajax 请求,并不会阻止 src 请求,所以能访问cnd,图片等 src 请求

CORS,Cross-Origin Resource Sharing,是一个新的 W3C 标准,它新增的一组HTTP首部字段,允许服务端其声明哪些源站有权限访问哪些资源。换言之,它允许浏览器向声明了 CORS 的跨域服务器,发出 XMLHttpReuest 请求,从而克服 Ajax 只能同源使用的限制。在我们的django框架中就是利用CORS来解决跨域请求的问题。

二、django解决

建议结合django-cors-headers和django配置,管理跨域相关的内容,比如白名单、子域等。重点是第5步。

1.安装

pip install django-cors-headers

2.配置INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

3.配置MIDDLEWARE中间件

MIDDLEWARE = [

    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

4.django-cors-headers中的参数

1.配置白名单

CORS_ALLOWED_ORIGINS 是新的参数名,CORS_ORIGIN_WHITELIST 是老的参数名,现在都可以使用,选择一个就行。

# 新
CORS_ALLOWED_ORIGINS = [
    "https://feishu.spacety.com",
    "http://localhost:80",
    "http://127.0.0.1:80",
    "http://192.168.18.156:80",
    "http://192.168.18.161:5173",
]
# 老
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:2020',
    'http://127.0.0.1:1010',
)

2.自定义路径的正则匹配

一个正则表达式,用于限制将为其发送 CORS 标头的 URL。 默认为 r’^.*$',即匹配所有 URL。 当您只需要站点的一部分上的 CORS 时很有用,例如 /api/ 上的 API。

CORS_URLS_REGEX = r"^/api/.*$"

3.允许所有源

CORS_ALLOW_ALL_ORIGINS 为新参数,CORS_ORIGIN_ALLOW_ALL为老参数,选择其中一个就可以默认值为False,如果设置为True,第一步中的白名单将失效。这个参数不建议使用。

CORS_ALLOW_ALL_ORIGINS =True
CORS_ORIGIN_ALLOW_ALL =True

4.设置自定义请求头参数

默认可以使用的非标准请求头,需要使用自定义请求头时,就可以进行修改

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    ‘new’
)

5.允许的 HTTP

默认允许全部的请求方法

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

6.允许跨域请求携带cookie

CORS_ALLOW_CREDENTIALS

CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

5.结合django的csrf配置

这个参数是django配置setiings的参数,可参考官方文档

1.csrf集成CORS

CORS和CSRF是分开的,Django无法使用你的CORS来。 配置以免除站点的引用检查,以使其在 安全请求。做到这一点的方法是使用其CSRF_TRUSTED_ORIGINS设置。

CORS_ALLOWED_ORIGINS = [
    "http://read.only.com",
    "http://change.allowed.com",
]

CSRF_TRUSTED_ORIGINS = [
    "http://change.allowed.com",
]

2.设置CSRF Cookie时要使用的域

这个将限制请求的来源,默认值为None,不设置。文章来源地址https://www.toymoban.com/news/detail-650765.html

CSRF_COOKIE_DOMAIN = 'spacety.com'

到了这里,关于【Django网络安全】如何正确设置跨域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当ChatGPT遇到网络安全!如何入门网络安全?

    ChatGPT:是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。GPT 是 Generative Pre-training Transformer 的缩写,是一种自

    2024年02月01日
    浏览(36)
  • 如何学习网络安全?(零基础入门网络安全学习笔记)

    概括来说,网络安全课程的主要内容包括: 安全基本知识 应用加密学 协议层安全 Windows安全(攻击与防御) Unix/Linux安全(攻击与防御) 防火墙技术 入侵监测系统 审计和日志分析 下面分别对每部分知识介绍相应的具体内容和一些参考书。 一、安全基本知识 这部分的学习过

    2024年02月11日
    浏览(35)
  • 什么是网络安全?如何让小白简单的学习网络安全

      网络安全是一个庞大的学科,如果只是普及网络安全技能是非常枯燥的,所以建议从大众容易接受的网络安全诈骗入手,可以先介绍一下近年来频发的网络安全诈骗案例,钓鱼邮件、中奖短信、冒充公检法等多种诈骗手段,面对网络安全威胁,我们要提升网络安全意识!

    2024年02月13日
    浏览(37)
  • 感知网络安全态势是什么?感知网络安全态势如何实施

    网络安全是当今社会中一个非常重要的话题。随着互联网的普及和信息技术的发展,网络安全问题日益突出。为了有效应对各种网络威胁和攻击,网络安全态势感知成为了一种关键的技术手段。 网络安全态势感知是指通过对网络环境中的各种信息进行收集、分析和处理,以实

    2024年02月15日
    浏览(36)
  • 是否为网络设备设置了统一的安全技术标准和最佳实践?

    防火墙策略管理与安全技术标准及最佳实践的探讨 随着信息化技术的快速发展以及企业、组织的业务规模不断扩展,网络安全已经成为了大家越来越关注的话题。防火墙作为一种基础的网络安全防护措施,其策略管理的重要性不言而喻。然而,在网络设备中设置统一的安全技

    2024年04月09日
    浏览(37)
  • 安全意识培训:如何提高员工网络安全意识?

    随着网络技术的不断发展和应用,网络安全已经成为企业必须关注和重视的问题。尤其是在今天,企业数字化转型的大背景下,网络安全问题日益凸显。对于企业而言,员工是企业安全的第一道防线,提高员工的网络安全意识已经成为企业安全管理的关键所在。本文将从以下

    2024年02月12日
    浏览(31)
  • 无线路由器怎么设置或更改wifi密码防蹭网保证网络安全

    无线路由器的WiFi密码设置合理,有助于我们防蹭网,保证网络安全。怎样设置无线网络的密码呢,或者更改wifi密码呢?下面我以D-Link DI524M无线路由器为例来给大家演示一下。 步骤 1、在浏览器地址栏中输入路由器的管理网址http://192.168.0.1按回车。不同品牌的路由器管理信息

    2024年02月07日
    浏览(37)
  • 如何学好网络安全?想学网络安全,看完这一篇就够了!

    一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往往需要花费很长时间,

    2024年02月06日
    浏览(42)
  • 应该如何保护网络安全

    随着网络的普及和发展,网络安全问题日益引人关注。面对网络黑客和恶意攻击,如何保障网络安全是一个亟待解决的问题。为了保护企业和个人的数据,人们需要采取一些行动。在这里,我们提供了一些有效的措施来保护网络安全。 盗用密码是网络犯罪的常见手段之一,因

    2024年02月11日
    浏览(43)
  • 如何学习网络安全?

    近半年我一直在整理网络安全相关资料,对于网络安全该怎么入门我谈谈我的看法,网络安全一直处于法律的边缘,学的不好或者剑走偏锋一下子人就进去了,所以我建议入门前先熟读《网络安全法》,除此之外还有《互联网安全产品漏洞管理规定》《gj 安全法》、《数据安

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包