学习
实践
活动
专区
工具
TVP
写文章

Django JSONField,HStoreField SQL注入漏洞

一、前言 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 二、漏洞简介 Django 在2019年8月2日进行了安全补丁更新, 修复了4个CVE, 其中包含一个SQL注入漏洞。 三、漏洞危害 经斗象安全应急响应团队分析,攻击者可以通过精心构造的请求包攻击使用了脆弱版本Django框架的服务器,攻击成功将会导致SQL注入漏洞,泄露网站数据信息。 四、影响范围 产品 Django 版本 Django 2.2.x < 2.2.4 Django 2.1.x < 2.1.11 Django 1.11.x < 1.11.23 版本 Django 五、漏洞复现 暂无 六、修复方案 1.升级Django版本到2.2.4,2.1.11,1.11.23 2.WAF中添加拦截SQL攻击的规则 七、参考 https://www.djangoproject.com/weblog

38230
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器7.33元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响

    0x01 什么是JSONField Django是一个大而全的Web框架,其支持很多数据库引擎,包括Postgresql、Mysql、Oracle、Sqlite3等,但与Django天生为一对儿的数据库莫过于 在Django中也支持了Postgresql的数据类型: JSONField ArrayField HStoreField 这三种数据类型因为都是非标量,且都能用JSON来表示,我下文就用JSONField 我们可以很简单地在Django的model中定义JSONField: from django.db import models from django.contrib.postgres.fields import 0x04 Django-Admin SQL注入漏洞 我们创建一个Django项目并创建一个model,其中包含一个JSONField字段: class Collection(models.Model): 总的来说,如果你的应用使用了JSONField,且用户可以进入应用的Django-Admin后台,就可以进行SQL注入。

    69032

    Django模板过滤

    一、过滤器概述 过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。 过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中 格式:{{ var|过滤器 }} 作用: 在变量被显示前修改它 二、内置过滤器与标签 模板过滤器可以在变量被显示前修改它,过滤器使用管道字符 lower 文档大写转换文本为小写。 __init__.py mytag.py 名字自定义 mytag.py代码如下 from django 注意 过滤管道可以被套接 ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入 实例 {{ my_list|first|upper }} # 第一个显示并转化为大写

    5510

    django rest framework 过滤时间操作

    通常我们会用到过滤两个时间段内的一些数据, 当我们用django rest framework的时候, 他可以根据字段filter_fields进行过滤, 但是对于日期来说并不起作用, 这个时候就需要我们设置重写 中时间区间过滤,排序 1.过滤下载 pip install django-filter 2.下载后注册 INSTALLED_APPS=[‘django_filters’,] 3.导入rest_framework import ModelViewSet class DoctorsViewSet(ModelViewSet): filter_backends = [DjangoFilterBackend] #过滤其他的字段 filter_fields = ('id', 'patient', 'doc_type',) #指向要过滤的类 filter_class = DoctorsFilter 2.排序 #1 ordering=id 正序 ordering_fields = ('id', ) 以上这篇django rest framework 过滤时间操作就是小编分享给大家的全部内容了,希望能给大家一个参考

    1K30

    Django 进阶学习 - 文本框过滤

    Django 进阶学习 - 文本框过滤 Posted May 03, 2016 默认情况下django可以对列进行过滤, 但大多数是对Relationship列通过list_filter 直接指定field name就可以方便的进行过滤了, 但是如果实现文本框输入过滤属性, 然后通过按钮触发事件后来过滤只能通过自定义Django filter来实现 首先自定义一个filter类 filters.py 默认情况下如果没有 import ListFilter from django.utils.translation import ugettext_lazy as _ class SingleTextInputFilter 自定义filter template admin/textinput_filter.html, 直接放到本项目的template目录即可, 千万不要放到django包目录下的admin template 目录, 如果你了解django 模版检索的过程优先级, 你应该知道我说的意思.

    52410

    django 实现未经登录验证的url过滤

    由于需要对未经验证的u人类进行过滤,经过查询django文档,发现提供了middelware(中间件)这个非常不错的方法,写下来和大家分享。 django默认的配置文件中有以下几个:     'django.middleware.common.CommonMiddleware',     'django.contrib.sessions.middleware.SessionMiddleware # print path return HttpResponseRedirect(settings.LOGIN_URL) 这里对代码稍作解释: 对url进行过滤的话 ,需要使用正则匹配,因此这里使用compile来生成正则对象 其次需要考虑剔除一些不需要过滤的url,例如登陆url,关于url,index或是default等,这里我将这写url都写到配置settigns 然后我们在progress_request中编写我们的过滤函数,首先判断用户是否登陆 if 'user' not in request.session or not request.session['user

    47340

    Django(32)自定义过滤

    前言 虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。 在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递参数,那么还可以定义另外一个参数。但是过滤器最多只能有2个参数。 在写完过滤器(函数)后,要使用django.template.Library.filter进行注册。 还要把这个过滤器所在的这个app添加到settings.INSTALLED_APS中,不然Django也找不到这个过滤器。 在模板中使用load标签加载过滤器所在的python包。 可以使用过滤器了。 django.template.Library.filter还可以当作装饰器来使用。如果filter函数没有传递任何参数,那么将会使用这个函数的名字来作为过滤器的名字。

    7920

    详解Django自定义过滤

    过滤器与函数 django过滤器的本质是函数,但"函数"太多了,为了显示自己的与众不同,设计者们想了个名字"过滤器"... django有一些内置的过滤器,但和"新手赛车"不多(把字母转成小写,求数组长度 过滤器 先给出我的一点体会: 在django是MVP的架构,数据模型交给Model,逻辑处理交给View,样式模板交给temPlate,这是公认的合理架构. ,每个文件可以存放多个功能相关的过滤器,使用功能相关的过滤器时,直接导入单个文件就可以一并使用相关功能,不愧是django,框架设计真的很赞! 新建文件 3.在my_filter.py中,先导入头文件,编写过滤器函数(这里偷个懒,直接用python的内置函数做示范),注册过滤器(还是喜欢装饰器); from django.template import > {# 加载过滤器所在的文件,由于templatetags的文件名是固定的,django可以直接找到过滤器文件所在的位置 #} {% load zhao_fillter %} {# 显示列表数据

    52570

    扫码关注腾讯云开发者

    领取腾讯云代金券