在Django中预防CSRF攻击的操作

作者:代序春秋 时间:2023-11-11 15:55:13 

CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。

CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。

( 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…)

造成的问题:个人隐私泄露以及财产安全。

CSRF攻击示意图

客户端访问服务器时没有同服务器做安全验证

在Django中预防CSRF攻击的操作

防止 CSRF 攻击

步骤:

1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值

2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token

3. 在用户点击提交的时候,会带上这两个值向后台发起请求

4. 后端接受到请求,会做以下几件事件:

4.1 从 cookie中取出 csrf_token

4.2 从 表单数据中取出来隐藏的 csrf_token 的值

4.3 进行对比

5. 如果比较两个值(经过算法运算得出的结果)是一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

在Django中预防CSRF攻击的操作

CSRF_TOKEN的设置过程

创建视图类

在Django中预防CSRF攻击的操作

添加路由

在Django中预防CSRF攻击的操作

添加表单

在form里添加语句

在Django中预防CSRF攻击的操作


<form method="post" action="/tpl/csrf">
 {{ csrf_input }}
<p>
<label for="fave">Fruit: <input id="fave" name="fave" /></label>
</p>
<p>
<label for="name">Name: <input id="name" name="name" /></label>
</p>
<button>提交</button>
</form>

在Django中预防CSRF攻击的操作

补充知识:Django实现url跳转(重定向)

编辑urls.py文件如下:


from django.urls import path, include
from django.views.generic import RedirectView

urlpatterns = [
 path('polls/', include('polls.urls')),
 path('', RedirectView.as_view(url='polls/')),

]

即表示将xxx.com跳转到xxx.com/polls/。

来源:https://blog.csdn.net/geek64581/article/details/102759624

标签:Django,CSRF,攻击
0
投稿

猜你喜欢

  • JS数组方法汇总

    2009-08-03 14:06:00
  • MySQL存储过程savepoint rollback to

    2008-12-03 16:02:00
  • vue2.0开发实践总结之疑难篇

    2024-05-02 16:33:28
  • 学点简单的Django之第一个Django程序的实现

    2021-03-23 05:10:59
  • 父节点获取子节点的字符串示例代码

    2024-02-27 05:07:02
  • 在PyCharm下使用 ipython 交互式编程的方法

    2021-05-06 11:12:01
  • Python+pyftpdlib实现局域网文件互传

    2022-01-10 04:09:30
  • Pandas 合并多个Dataframe(merge,concat)的方法

    2021-07-14 07:26:58
  • java代码实现mysql分表操作(用户行为记录)

    2024-01-17 22:57:09
  • Python数据分析Pandas Dataframe排序操作

    2022-06-28 07:44:11
  • 详解opencv中画圆circle函数和椭圆ellipse函数

    2023-08-10 22:11:40
  • python利用smtplib实现QQ邮箱发送邮件

    2023-07-15 18:47:12
  • 如何利用数据库内容建立一个下拉式列表?

    2010-01-01 15:46:00
  • Bootstrap 表单验证formValidation 实现表单动态验证功能

    2024-04-22 12:51:36
  • Python如何匹配文本并在其上一行追加文本

    2022-10-19 13:16:43
  • python使用rsa非对称加密过程解析

    2021-06-15 00:14:51
  • python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择

    2022-04-22 01:39:50
  • Oracle重建控制文件的实例教程

    2024-01-25 11:02:16
  • 微软建议的ASP性能优化28条守则(1)

    2008-02-22 16:54:00
  • Python使用百度API上传文件到百度网盘代码分享

    2023-08-05 02:38:52
  • asp之家 网络编程 m.aspxhome.com