【SQL注入】代码安全审计经验分享

news/2024/10/4 3:29:26

一、MyBatis框架中的注入漏洞

Mybatis框架支持的CURD功能可以直接搜索XML文件中的${和${}拼接的SQL语句,如果SQL的参数可控,就可能造成注入风险。

另外,有的SQL语句使用的是注解开发,把SQL语句可以直接写在了代理接口方法上方,审计的时候可以将两种情况都注意一下,或许有不同的发现。

安全的方式应该是使用#号接收参数,但很多时候如数据库表的字段名,又只能使用$符接收参数。
白名单的方案是可以将数据库表的字段名维护为一个数组,再检查参数是否在数组内,经过拼接的payload就不能通过检查, 例如:对于排序,只用了到ASC、DESC中的一个,把这两做成白名单即可,SQL注入的payload不在这个名单中,在反序列化时就会被拦截。

二、JPA中的SQL注入

JPA受SpringBoot官方支持直接提供启动依赖,和MyBatis一样,JPA框架方便开发人员完成与数据库的各种交互操作。

对于JPA中的SQL注入,一般出现时使用的是+号直接拼接。

安全的方式应该用冒号或者问号进行参数绑定:

三、无法利用的SQL注入

在文章开头提到,如果SQL参数可控可能造成注入风险,即使直接拼接到SQL语句的参数可控,也并不意味着这个SQL注入漏洞可以被利用。

比如前端将JSON传送到后端后,会有一个反序列化的操作,将JSON串反序列化为目标类,期间会有一个数据类型转换过程。

查看如下两个字段在实体类的定义,发现是int类型,但是SQL注入的payload是字符串类型(形如”OR IF(SLEEP(5), 0, 1)--+"的字符串),数据类型不匹配,在反序列化这一步的数据类型转换就通过不了,因此这个注入漏洞并不能利用。
的参数可控,就可能造成注入风险。

原创 洞源实验室

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/55106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2024-08-31:用go语言,给定一个数组apple,包含n个元素,每个元素表示一个包裹中的苹果数量; 另一个数组capacity包含m个元素,表示m个不同箱子的容量。 有n个包裹,每个包裹内装有

2024-08-31:用go语言,给定一个数组apple,包含n个元素,每个元素表示一个包裹中的苹果数量; 另一个数组capacity包含m个元素,表示m个不同箱子的容量。 有n个包裹,每个包裹内装有指定数量的苹果,以及m个箱子,每个箱子的容量不同。 任务是将这n个包裹中的所有苹果重新分配…

主元素问题(C语言)

主元素问题(C语言) 题目参考代码 #include <stdio.h> int main() {// 主元素问题int n, s[400002], num = 1, max = 0, maxNum = 0;scanf("%d", &n);for (int i = 0; i < n; i++)scanf("%d", &s[i]);for (int i = 0; i < n; i++) //…

如何在愈发激烈的2025广西南宁中考中生存下来

背景 以2024年为例 吃了择校的亏 七年级结束后,北宁市教育局突然通知北宁市的X中学和S学校转为公办。 近年来教育改革过程中,我确实没有吃到这个时代发展的红利,反观北宁市的一些高中越来越卷,逐渐衡水化。 要求 考前学科答题规范讲座(语文主讲:南宁二中申颖老师):不要…

Markdown学习20221418曾庆林

一、我掌握的内容 1.Markdown及其基本的语法(标题,有序列表,代码) 2.线下工具vscode 二、我没有掌握的内容 1.markdown详细语法(斜体,无序列表,链接,引用,分割线,表格) 2.线上工具 3.插入公式,绘图,格式转换 4. ChatGPT 等 AIGC 的提示词工程中的应用 三、实践 斜…

20221421李旻奇Markdown学习

问题1:哪些内容是你掌握的?哪些内容是你没有掌握的?使用AI推荐的工具或者你喜欢的工具实践一下没有掌握的内容 本次学习使用ChatGPT回复 我掌握的 Markdown是一种轻量级的标记语言,用于格式化文本。它的设计目标是使文本在不需要复杂工具的情况下能保持良好的可读性和可写性…

回顾一些常识————环境变量

前言 最近写一些底层一些的东西,简单回顾一下环境变量. 正文 首先我们来看下c 语言的环境变量的位置。可以看到每个进程都有自己的环境变量,操作系统会复制环境变量的副本给一个新创建的进程。 那么这个副本哪里来呢? 是操作系统自己维护一份在内存中吗?那不是,因为操作系…