首页 > 其他分享 >23、Django-CSRF跨站伪造请求攻击

23、Django-CSRF跨站伪造请求攻击

时间:2024-07-09 22:43:07浏览次数:10  
标签:跨站 23 views request Django csrf test import django

 

配置:
1、在settings.py中确认MIDDLEWARE中 确保 
   -- django.middleware.csrf.CsrfViewMiddleware  打开
    
2、在模板中、form标签下添加如下标签:
  -- {% csrf_token %}    #这个就是页面中的暗号

 

案例

views.py
---------------------------------------------------------------------------------
#crsf攻击
def test_csrf(request):
    if request.method == 'GET':
        return render(request, 'test_csrf.html')
    elif request.method == 'POST':
        print(request.POST)
        return HttpResponse('test_csrf in 测试 post')
    
-----------------------------------------------------------------------------------
test_csrf.html
------------------------------------------------------------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>crsf测试</title>
</head>
<body>

<form action="/apicsrf/" method="post">

    {% csrf_token %}
    <input type="text" name="username">
    <input type="submit" name="提交">
</form>

</body>
</html>
-----------------------------------------------------------------------
urls.py
------------------------------------------------------
from django.contrib import admin
from django.urls import path
from midware import views

urlpatterns = [
    path('apicsrf/', views.test_csrf)
]
------------------------------------------------------------------------

 

如果有些视图函数不需要比对csrf的暗号可以局部关掉

#在视图函数中添加装饰器

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
    pass

 

标签:跨站,23,views,request,Django,csrf,test,import,django
From: https://www.cnblogs.com/littlecc/p/18192577

相关文章

  • 22、Django-中间件-Middleware
    1、中间件是Django请求/响应处理的钩子框架、他是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出2、中间件以类的形式体现3、每个中间件组件负责做一些特定的功能、例如:Django包含一个中间件组件AuthentucationMiddleware、它使用会话将用户与请求关联起来......
  • 29、Django-uWSGI项目部署
    WSGI(WebServerGatewayInterface)Web服务器网关接口、是Python应用程序或框架和Web服务器之间的一种接口、被广泛使用使用pythonmanage.pyrunserver通常只是再开发测试环境中使用当开发结束后、完善的项目代码需要在一个高效稳定的环境中运行、这时可以使用WSGI这里WSGI......
  • 28、Django-发送邮件
    SMTP全称是(SimpleMailTransferProtocol)即简单邮件传输协议(端口是25)-他是一组用于从源地址到目的地址传输邮件的规范、通过它来控制邮件的中转-属于推送协议-负责发送IMAP-邮件相关协议(InternetMailAccessProtocol)即交互式邮件访问协议、是一个应用层协议、端口是143-用来从本地邮件客户端(OutlookExporess、Foxmail、MzzillaThunderbird)访问远程服务......
  • 27、Django-文件上传
    上传规范:1、文件上传必须为POST提交方式2、表单'<form>'中文件上传时必须带有enctype="multipart/form-data"时才会有包含文件内容的数据3、表单中用<inputtype="file"name="xxx">标签上传文件#在视图函数中-用request.FILES取文件框的内容-file=request.FILES['xxx......
  • 30、Django-项目部署-nginx
     原理: 安装: 配置:-这里uwsgi_pass表示使用uwsgi协议转发代理-include表示加载uwsgi协议的参数(固定)-nginx-t  #检查配置文件语法  修改uWSGI:  socket表示启用uwsgi协议      ......
  • Django学习第六天
     启动项目命令pythonmanage.pyrunserver取消模态框功能js实现列表数据删除第二种实现思路使用jquery修改模态框标题编辑页面拿到数据库数据显示默认数据功能实现想要去数据库中获取数据时:对象/字典三种不同的数据类型使用Ajax传入数据实现表单编辑,删除,修改......
  • 16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()
    一对一不是数据库的一个连表操作、而是Django独有的一个连表操作、一对一相当于是特殊的一对多的关系、只是相当于加了unique=True models.pyfromdjango.dbimportmodels#身份证classIDCard(models.Model):idcard_num=models.CharField(max_length=18,unique=......
  • 15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()
    针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表 models.pyfromdjango.dbimportmodels#Createyourmodelshere.#多对多#用户表:电影=N:M#一个用户可以收藏多部电影#一部电影可以被不同的用户收藏#电影classMovie(models.M......
  • 14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()
    #多模块关联--关联分类:Django中的三个函数--ForeignKey-称为外键:一对多、将字段定义在多的一端中--ManyToMnayField:多对多、将字段定义在两端的任意一端中--OneToOneField:一对一、将字段定义在任意一端中 如:一对一:一对多:多对多:常用......
  • 浅谈 [NOIP 2023]三值逻辑 无限种解法
    浅谈[NOIP2023]三值逻辑无限种解法前言对于NOIP2023,T1是个人人都会写的签到题,对于T3则是做法唯一只能按照提醒的数据范围一步一步走,对于T4则是只能线段树优化dp。思维局限性大,并没有什么深度挖掘的意义。直到有一天睡觉的时候又想起来T2这个题,觉得有必要把这个题相......