首页 > 其他分享 >基于Django的安全性学习(上)

基于Django的安全性学习(上)

时间:2023-12-13 09:34:46浏览次数:36  
标签:基于 网页 用户 Django CSRF SQL 浏览器 安全性

基于Django的安全性学习(上)

防御跨站脚本攻击(XSS)

  • 发起 XSS 攻击的人可以向其他用户的浏览器诸如客户端脚本。这种攻击通常由存储在数据库中的恶意脚本实现,这些脚本会被检索出来并显示给其他用户;或者通过其他用户点击会令攻击者的 JavaScript 脚本在浏览器中执行的链接来实现。

  • 对于 HTML 来说,Django 模板中的 转义特殊字符 是尤其危险的。虽然它保护用户免受大多数恶意输入的攻击,但并非万无一失。比如,出现下面这种情况就会保护失效:

<style class={{ var }}>...</style>
  • 如果 var 被设置为 'class1 onm ouseover=javascript:func()' ,将导致未经授权的 JavaScript 脚本执行,这取决于浏览器如何渲染有缺陷的HTML。(引用属性值可以解决这个问题)
    与此不相上下的还有在使用带有自定义模板标签的 is_safe ,safe 模板标签,mark_safe,以及关闭自动转义时要特别小心。
    此外,如果使用模板系统输出了除 HTML 之外的内容,可能会有完全独立的字符和单词需要转义。

防御跨站点请求伪造(CSRF)

  • 发起 CSRF 攻击的人可以使用其他用户的证书执行操作,且是在其不知情或不同意的情况下。
  • Django 内置了保护措施来防御大多数 CSRF 攻击,但和多数缓解性技术一样,它是有局限性的。比如可以全局禁用 CSRF 模块或者特定的视图。
    CSRF 保护机制 通过检查每一个 POST 请求中的密文来实现。这保证恶意用户不能“复现”一个表单并用 POST 提交到网页,并让一个已登录用户无意中提交该表单。恶意用户必须知道特定于用户的密文(使用 cookie)。
    在部署 HTTPS 时,CsrfViewMiddleware 会检查 HTTP 报文的 referer 首部是否设置为同源的 URL(包括子域和端口)。因为 HTTPS 提供了额外的安全性,所有通过转发不安全连接请求并在支持的浏览器中使用 HSTS 来确保连接在可用的地方使用了 HTTPS ,这一点是很重要的。

防御 SQL 注入

  • SQL 注入能让恶意用户能在数据库中执行任意 SQL 代码。这将导致记录被删除或泄露。

  • Django 的 querysets 在被参数化查询构建出来时就被保护而免于 SQL 注入。查询的 SQL 代码与查询的参数是分开定义的。参数可能来自用户从而不安全,因此它们由底层数据库引擎进行转义。
    Django 也提供了书写原始查询或执行自定义 sql 的权力。

防御访问劫持

  • 访问劫持能让恶意网页覆盖另一个网页。可能会有毫不知情的用户被骗入目标网页并执行意料之外的操作。

  • Django 包含访问劫持保护 ,以 X-Frame-Options middleware 的形式在支持它的浏览器中阻止一个网页被渲染在 frame 的内部。可在每个视图的基础上禁用保护,也可配置发送的确切头部值。
    对于任何不会被第三方网站嵌入 frame 的网页,或者只允许使用一小部分的网页来说,强烈建议使用中间件。

标签:基于,网页,用户,Django,CSRF,SQL,浏览器,安全性
From: https://www.cnblogs.com/whcl/p/17898321.html

相关文章

  • 高级计算机网络课程结课论文——《5G AKA协议安全性分析综述》
    AbstractInaneraofrapiddevelopmentofthenationaleconomy,variouselectronicproductsandmultimediatechnologieshaveemerged.Asaformofdigitalmedia,digitalvideohasbeenwidelyappliedinvariousfields,bringingjoyandconveniencetopeop......
  • 使用CEF(七)详解macOS下基于CEF的多进程应用程序CMake项目搭建
    由于macOS下的应用程序结构导致了CEF这样的多进程架构程序在项目结构、运行架构上有很多细节需要关注,这一块的内容比起Windows要复杂的多,所以本文将会聚焦macOS下基于CEF的多进程应用架构的环境配置,并逐一说明了CMake的相关用法和CEF应用配置细节。前言在进行搭建之前,我们首先必......
  • 基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI
    前言定时任务调度应该是平时业务开发中比较常见的需求,比如说微信文章定时发布、定时更新某一个业务状态、定时删除一些冗余数据等等。今天给大家推荐一个基于.NETCore+Quartz.NET +Vue+IView开箱即用的定时任务UI(不依赖数据库,只需在界面做简单配置):Quartz.NetUI。Quartz.......
  • Django学习(三) 之 模板中标签的使用
    写在前面最近看到稀土掘金在搞2023年终总结征文活动,一直想尝试投稿试试,周末我就花了近一下午时间写完初稿,然后周一、周二完成精读再改稿,感觉OK,昨晚凌晨第一时间在稀土掘金投稿。结果,又发生了同样的事情。同样的文章,在博客园上、公号上阅读量很OK,在稀土掘金上就上不来。这应......
  • 手持心电图机|基于MTK6761/MT6762平台的便携式心电图机方案
    心电图机是一种广泛应用于监测心脏状况的设备,它可以从多个角度观察心脏情况,及时反映患者的病情,以方便医生和患者进行了解。通过触摸屏可以轻松控制和录入信息。心电图机的报告提供多种语言选择,方便上传信息并实现无纸化报告。同时,该设备还支持远程诊断和远程医治。心电图机......
  • 基于5G智能网关的河道清洁机器人应用
    5G技术的普及也带动了机器人应用的快速发展,得益于5G通信技术的高带宽、低时延和高可靠性特性,显著提升了机器人的感知能力、控制精度以及远程操作能力,让机器人变得更加智能化、自主化。 5G智能网关赋能河道清洁机器人 河道清洁机器人就是一种具有代表性的5G赋能智能机器人应......
  • PMM 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署PMM#vimdocker-compose.ymlversion:'3'services:pmm-server:image:percona/pmm-ser......
  • 基于机器学习的时间序列温度预测
    本次研究是使用GRU模型和GRU-Attention模型对长时间序列温度数据进行预测拟合,对于这两个模型有兴趣的可以去网上了解一下,首先是日数据预测,由于日数据存在缺失值需要对缺失值进行填补,在对存在缺失值的数据中我使用三次样方插值对数据进行处理,其代码如下:importpandasaspdimp......
  • Django 创建项目时找不到数据库sqlite3,提示no changes detected
    原因:PyCharm创建Django项目,找不到数据库sqlite3 解决:如果没有默认的db文件,则应在PyCharm终端中执行以下命令:pythonmanage.pymakemigrations:提示pythonmanage.pymigrate ......
  • Guardrails for Amazon Bedrock 基于具体使用案例与负责任 AI 政策实现定制式安全保障
    作为负责任的人工智能(AI)战略的一部分,您现在可以使用 GuardrailsforAmazonBedrock(预览版),实施专为您的用例和负责任的人工智能政策而定制的保障措施,以此促进用户与生成式人工智能应用程序之间的安全交互。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术......