首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

Postgresql了,Django官方也建议配合Postgresql一起使用。...).all() JSONField强大让我们能灵活地在关系型数据库与非关系型数据库间轻松地切换,因此在我们很多业务中都会使用到这个功能。...那么,在JSONField中,lookup实际上是没有变,但是transform从“在外键表中查找”,变成了“在JSON对象中查找”,所以自然需要重写get_transform函数。...但是熟悉Django同学也应该知道,Djangoqueryset使用方法是编写如下查询语句: .filter(detail__author='phith0n') 这个detail__author用户是无法控制...总的来说,如果你应用使用JSONField,且用户可以进入应用Django-Admin后台,就可以进行SQL注入。

2K32

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...1.针对当前用户进行筛选 您可能希望筛选查询集,以确保仅返回与发出请求的当前经过身份验证用户相关结果。 为此,可以基于用户值进行筛选。...search=russell 4.2 多字段查找 还可以使用查找 API 双下划线表示法对 ForeignKey 或 ManyToManyField 执行相关查找: search_fields = ['...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同双下划线表示法根据数据结构中嵌套值进行查找...(目前只支持DjangoPostgreSQL后端。 ‘$’ 正则表达式搜索。

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

SQL答疑:如何使用关联查询解决组内筛选问题

---- CDA数据分析师 出品 导读:本文主要介绍SQL环境下关联查询,如何理解关联查询,以及如何使用关联查询解决组内筛选问题。...什么是关联查询 关联查询是指和外部查询有关联查询,具体来说就是在这个子查询里使用了外部查询包含列。...因为这种可以使用关联列灵活性,将SQL查询写成查询形式往往可以极大简化SQL语句,也使得SQL查询语句更方便理解。...内部查询利用关联查询涉及外部查询提供信息,外部查询也会根据内部查询返回记录进行决策。内部查询执行依赖于外部查询,不能单独执行。 应用场景 在细分组内进行比较时,需要使用关联查询。...关联查询做法 通过设置表别名方法,将一个表虚拟成两个表进行自连接,并且使用关联查询,内部查询返回结果,传递给外部查询进行比较筛选

3.3K30

CVE-2019-14234:Django JSONField SQL注入漏洞复现

Django采用了MTV框架模式,即模型M,视图V和模版T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动应用程序。...0x01 漏洞概述 ---- 该漏洞需要开发者使用JSONField/HStoreField,且用户可控queryset查询时键名,在键名位置注入SQL语句。...Django通常搭配postgresql数据库,而JSONField是该数据库一种数据类型。...该漏洞出现原因在于DjangoJSONField实现,Djangomodel最本质作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单字符串拼接。...0x04 漏洞利用 ---- 通过对代码分析,可以知道如果在你Django使用JSONField并且查询“键名”可控,就可以进行SQL注入 访问http://ip:8000/admin 输入用户名

2.3K00

Django-xadmin+rule对象级权限实现方式

数据库记录导入导出(xsl, json等),并且拥有对象级权限控制(如:小A不能导出小B公司信息,更不能导入小B公司信息进行更新和新增) 1.2 现状 实现需求1:Django-admin让我们能够很方便实现一个管理后台程序...django-xadmin则在拥有admin基本功能基础上增加了更为丰富功能、界面也更加漂亮。...类似还有django-suit等,本文使用xadmin(功能更丰富); 实现需求2:django-admin,以及xadmin都只有基于model级权限控制机制,需要自己扩展或者使用开源解决方案,如django-guardian...django工程、xadmin替换原生admin设置,请参照官方文档。...欢迎提出修改意见 软件支持 jsonfield 数据库 新建3个表 from django.db import models from django.contrib.auth.models import

91620

Django漏洞系列

所以,想要利用这个漏洞条件主要有几下几点: Django版本需要小于1.11.5以下 输入参数在数据库中具有Unique约束属性,即唯一性 没有对用户输入参数进行检查与转义 这里以vulhub...,如果匹配上URL路由中最后一位是/,而用户访问时候没加/,Django默认会跳转到带/请求中。...Django JSONField/HStoreField SQL注入漏洞 漏洞编号:CVE-2019-14234 开发者在Django使用JSONField/HStoreField,且用户可控queryset...这里使用数据库是Postgersql,关于该数据库详细信息以及注入知识请在本站搜索文章:Postgresql相关知识及注入 Django GIS SQL注入漏洞 漏洞编号:CVE-2020-9402...我们搭建靶场模拟一下实战攻击,数据库使用Oracle,所以下面贴出有关Oracle注入相关知识: DBA:代表拥有全部权限,是系统最高权限,只有DBA才可以创建数据库结构 RESOURCE:

2.6K40

大厂算法面试:使用移动窗口查找两个不重叠且元素和等于给定值数组

使用滑动窗口我们能方便找到元素和等于给定值数组。注意到数组只包含正整数,因此如果保持start不变,end向右边移动,那么窗口内部元素和就会变大,如果保持end不变,那么窗口内元素和就会减小。...如此类推,我们从数组最左端出发,如果窗口内元素和小于给定指定值,那么就向右移动end,如果大于给定值,那么就像左移动一个单位,当窗口挪出数组,也就是end值大于数组最后一个元素下标时,查找结束,当前能找到所有满足元素和等于特定值所有数组...首先使用对应sub_array记录当前找到满足条件数组,使用subarray_index作为遍历队列标记。...,在这个遍历过程中,我们记录下长度最小数组,使用shortest_array_index进行标记。...,因此时间复杂度为O(n),同时我们需要使用一个队列来存放满足条件数组,因此空间复杂度为O(n),这道题难点在于获得两个不重叠数组,我花费了大量时间在调试这一点上,如果面试机考中出现这道题,

1.6K20

java对象转json字符串方法_oracle clob转字符串

后来经过查找资料,得知可以使用FastJson中@JSONField注解来解决,具体实现如下: import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField...原来fastjsonkey是根据Java对象里面的getter和setter方法来,不是根据属性名,所以会出现这个问题,你在属性get和set方法上面写上标注@JSONField(name =...那么,既然如此,有了注解之后是不是跟Java对象成员变量就没关系了呢,我们把Java对象成员变量改成小写,使用注解保持原来格式,继续测试。...: {"RESULT_CODE":"0","RESULT_VALUE":"OK"} 根据以上 结果得出,使用了fastjson@JSONField之后,就可以在不改变Java对象成员变量前提下,自定义...json输出格式了,这样看来还是很方便

1.3K20

Django 项目创建

git init #进入 acapp 中初始化git仓库 将该容器公钥上传 git,在偏好设置种添加 ssh 密钥,之后 在 git 云端创建新项目,按照提示在终端里连接仓库。...另一种方法直接全文查找 ag ALLOWED-HOSTS 返回文件位置。 注意: 运行后,控制台会显示项目主页访问请求信息,按 Ctrl + c 结束进程。...---- 1.4 创建Django app ---- 创建一个 Django 应用: python3 manage.py startapp game #game 为该应用名字 之后项目开发在这个子应用...game/urls.py urls 存储了相应路由,即调用函数链接指向,此处路由为 game 应用路由: from django.urls import path from game.views...acapp/urls.py 设置应用路由仍需要将其加入到整个项目的路由当中: from django.contrib import admin from django.urls import path

61020

django配置文件详解_django配置redis

前言 Django配置文件settings.py用于配置整个网站环境和功能,核心配置必须有项目路径、密钥配置、域名访问权限、App列表、中间件、资源文件、模板配置、数据库连接方式 基本配置信息...密钥主要用于用户密码、CSRF机制和会话Session等数据加密 用户密码:Django内置一套Auth认证系统,该系统具有用户认证和存储用户信息等功能,在创建用户时候,将用户密码通过密钥进行加密处理...当项目启动时,Django会从项目应用app里面查找相关资源文件,查找功能主要由App列表INSTALLED_APPSstaticfiles实现 注意:一般我们会在app下面创建一个static文件夹...那么可以在settings.py中添加STATICFILES_DIRS,以后DTL就会在这个列表路径中查找静态文件。...设置STATIC_ROOT需要使用Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置文件夹里。

1.1K10

Django源码学习-2-Settings.py配置文件-上

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...在编写代码过程中,会开始去思考,Django 提供 API,是否能熟练使用,从模型到视图再到路由,再把项目运行,在浏览器上打开,有没有觉得很神奇?...为什么简短几行代码就能在浏览器上访问到亲手写网站。 ? 出于这种对未知又想学习好奇心,先来渐渐熟悉下 Django Settings.py 配置文件。...② SECRET_KEY Django 新建项目随机生成密钥 SECRET_KEY = 'w4rpn$)qdtxjtyg)^mp456b)4pfx$jnb5dn0*g*h$v3)4y*ocg' ③ DEBUG...提供了一个通用 Session 框架 django.contrib.sessions 消息框架可以使用不同后端存储临时消息 django.contrib.messages 加载静态文件 django.contrib.staticfiles

56920

Java创建Annotation

例如,用户可以使用@JsonField("someFieldName")并且不需要将注解声明为注解@JsonField(value = "someFieldName"),尽管后者仍然可以使用(但不是必需...此外,我们可以检查这些字段以发现每个字段是否都使用特定注解进行注解。 这样,我们可以遍历传递给方法参数对象关联类每个字段,并发现哪些字段使用@JsonField注解。...如果@JsonField包含value参数提供值(例如"manufacturer"之前使用@JsonField("manufacturer")),我们将使用提供字段名称。...JsonSerializeException(String message) { super(message); }} 尽管JsonSerializer该类看起来很复杂,但它包含三个主要任务:(1)查找使用...在获得对该字段访问权限之后,我们检查该字段是否使用了注解@JsonField

1.5K20

美多商城前三天重点内容大盘点

1.2自定义用户模型类步骤 我们在编写应用目录apps中创建Django应用users,并在配置文件中注册users应用。 在创建好应用models.py中定义用户用户模型类。...Django认证系统所识别,需要在配置文件中告知Django认证系统使用我们自定义模型类。...,否则后续使用可能出现未知错误。...答:当客户端将jwt token传递给服务器之后,服务器首先需要进行签名认证,签名验证过程: 将客户端传递jwt token中header和payload字符串进行拼接,用 .隔开 使用服务器之间密钥对拼接之后字符串进行加密...注意点: a.payload不要存放一些敏感数据 b.服务器密钥需要保持好, c.如果可以,使用HTTPS协议。

75820
领券