当前位置: 首页 > news >正文

Django | 从中间件的角度理解跨站请求伪造(Cross-Site Request Forgey)[CSRF攻击]

文章目录

    • 切入点
    • 案例测试
      • views.py测试代码
      • templates模板下的html文件
      • 配置路由
      • 运行服务 出现CSRF报错
      • 解决CRSF报错
      • 再次运行服务 查看结果

切入点

某些恶意网站上包含链接、表单按钮或者]avaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作
在这里插入图片描述

  • Gjango如何做?

存储暗号:html页面一个 ||| COOKIE 一个
Django在一定的运算下比对两个暗号 是一致的 就不会发生403错

我们通过一个案例来理解

案例测试

确保CSRF中间件功能已经启动
在这里插入图片描述

views.py测试代码

def test_csrf(request):if request.method == 'GET':return render(request, 'test_csrf.html')elif request.method == 'POST':return HttpResponse('---test post is ok---')

templates模板下的html文件

  • 注意此时 html没有暗号
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test_csrf</title>
</head>
<body><form action="/test_csrf" method="post"><input type="text"  name="username"><input type="submit"  value="提交"></form>
</body>
</html>

配置路由

path(‘test_csrf’,views.test_csrf),

运行服务 出现CSRF报错

python manage.py runserver

  • 网页查看
    在这里插入图片描述
    网页报错403,CSRF验证失败,同时给出了我们具体的解决方案

解决CRSF报错

  • html添加暗号
    <form action="/test_csrf" method="post">{% csrf_token %}   <input type="text"  name="username"><input type="submit"  value="提交"></form>

{% csrf_token %}是CRSF能否验证通过 的关键

再次运行服务 查看结果

  • 检查查看cookie
    在这里插入图片描述
  • 查看html界面源码
    在这里插入图片描述
    出现暗号 但是隐藏了
    到这里,你应该进一步理解了CSRF攻击的原理了吧

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git合入另一个分支连续的多个提交
  • 生物药物分离与纯化技术pdf文件分享
  • 前端技术-- 动画特效之AOS组件简介与使用案例
  • mac 2k显示器 配置
  • 数据安全有多重要?(非常详细)零基础入门到精通,收藏这一篇就够了
  • 文件上传漏洞-防御
  • Java面试--设计模式
  • 【HW工具】Nacos漏洞综合利用工具v7.0,零基础入门到精通,收藏这一篇就够了
  • 数学分析原理答案——第一章 习题16
  • Tensorflow—第四讲网络八股扩展
  • [C++]: std::move
  • Vue引入使用iconfont字体图标
  • Java 基础(从编写到运行)详细说明
  • springboot使用WebSocket
  • LeetCode257 二叉树的所有路径
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular数据绑定机制
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • express如何解决request entity too large问题
  • Js基础知识(一) - 变量
  • mysql 数据库四种事务隔离级别
  • PhantomJS 安装
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue.js源码(2):初探List Rendering
  • WinRAR存在严重的安全漏洞影响5亿用户
  • Yii源码解读-服务定位器(Service Locator)
  • 当SetTimeout遇到了字符串
  • 分享几个不错的工具
  • 日剧·日综资源集合(建议收藏)
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何编写一个可升级的智能合约
  • 我与Jetbrains的这些年
  • 用Canvas画一棵二叉树
  • 用Python写一份独特的元宵节祝福
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ‌JavaScript 数据类型转换
  • # .NET Framework中使用命名管道进行进程间通信
  • # 数据结构
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (day18) leetcode 204.计数质数
  • (Matlab)使用竞争神经网络实现数据聚类
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (规划)24届春招和25届暑假实习路线准备规划
  • (简单) HDU 2612 Find a way,BFS。
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十三)MipMap
  • (一) springboot详细介绍
  • (一)Linux+Windows下安装ffmpeg
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • *1 计算机基础和操作系统基础及几大协议
  • .NET Core 版本不支持的问题