聊聊SQL注入

实例:模拟登录请求传入用户id和密码参数,使用字符串拼接导致的SQL注入。

  • 拼接SQL语句,就会出现SQL注入的安全问题,拼接代码如下:
String sql = "select * from user where username='" + uid + "' and password='" + passwd + "'";
  • 若此时传入参数如下:永真式万能密码 或 封号结束注释后面条件验证(只能说人的脑洞真大哈哈),还有更奇葩的像 Union 注入
params.put("uid", "malongfei");
params.put("passwd", "111' or '1' = '1");
// 或者
params.put("uid", "malongfei'; -- ")
// 或者
params.put("uid", "malongfei'; # ")
  • 此时JDBC还没意识到安全问题,依旧将以上参数拼接到我们的SQL原语中,如下:
select * from user where uid = 'malongfei' and passwd = '111' or '1' = '1';
select * from user where uid = 'malongfei'; -- ' and passwd = '111' or '1' = '1';
select * from user where uid = 'malongfei'; # ' and passwd = '111' or '1' = '1';

Original: https://www.cnblogs.com/malongfeistudy/p/16745900.html
Author: 有点小白的菜鸟
Title: 聊聊SQL注入

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580483/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 理解Java FutureTask

    FutureTask实现的功能 它的功能就像他继承的接口一样:Runnable与Future。他实现了一套机制将两者连接起来。Runnable主要方法是run(),用于执行一些程序…

    Java 2023年5月29日
    077
  • count(1)比count(*)效率高?

    SELECT COUNT(*) FROM table_name是个再常见不过的统计需求了。本文带你了解下 Mysql的 COUNT函数。 一、 COUNT 函数 关于 COUNT函…

    Java 2023年6月6日
    077
  • 矩阵顺时针打印(C++)(? 为什么不能AC,9度1391)

    测试数据: 5 51 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 252 21 23 44 41 2 3 45…

    Java 2023年6月7日
    063
  • 注册功能分析以及表单校验

    注册功能分析 表单校验 表单校验: 1、用户名:单词字符,长度8到20位 2、密码:单词字符,长度8到20位 3、email:邮件格式 4、姓名:非空 5、手机号:手机号格式 6、…

    Java 2023年6月6日
    074
  • 使用轻量级Spring @Scheduled注解执行定时任务

    WEB项目中需要加入一个定时执行任务,可以使用Quartz来实现,由于项目就一个定时任务,所以想简单点,不用去配置那些Quartz的配置文件,所以就采用了Spring @Sched…

    Java 2023年6月7日
    071
  • Java中ArrayList和LinkedList的区别

    在Java中虽然ArrayList和LinkedList都实现了List接口,但是其底层原理不相同。 ArrayList的底层是一个数组,LinkedList的底层是链表。 Arr…

    Java 2023年5月29日
    073
  • 2020年10月23日笔记

    Java8特性待更新 在公司项目里面有很多这类代码,熟练使用后能够加快开发速度。1、快速便利map的方法map进行快速遍历的方法map.forEach((key,value)-&g…

    Java 2023年6月13日
    057
  • cpp和c中struct用法的区别

    cpp和c中struct用法的区别 不使用typedef C语言中,定义struct的语法如下: struct [<tag>] { <member-list&gt…

    Java 2023年6月7日
    069
  • Java开发学习(二十)—-AOP总结

    切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数)异常名) execution(* com.itheima.service.*Service.*…

    Java 2023年5月29日
    060
  • 一冲计划

    计划总会过期,实现了的才会永久保存 Well Plan 顺利通过我的第一学期的所有科目,可以熟练的操作计算机一级,并将计算机二级提上日程,不打算考一级计算机,想要直接考二级!趁着假…

    Java 2023年6月5日
    071
  • ElasticSearch增加索引字段

    PUT xxx_index-000009/_mapping/_doc?include_type_name=true { “properties”:{ &#8…

    Java 2023年6月13日
    068
  • GeoHash(Java实现)

    java;gutter:true; package com.koubei.collect_script.demo;</p> <p>import java.u…

    Java 2023年5月29日
    081
  • 必应每日一图url(可直接使用)

    必应每日一图url 首先放出地址,后面是一堆心路历程(一堆废话),只为链接的可以不用看 https://baotangguo.cn:8081/ 最初 ​ 博客园装饰的时候(虽然是抄…

    Java 2023年6月5日
    070
  • ElasticSearch(二)检索的进阶

    ElasticSearch(二)检索的进阶 检索的进阶 SearchAPI ES支持两种基本方式的检索: https://www.elastic.co/guide/en/elast…

    Java 2023年6月5日
    094
  • 【Java分享客栈】从线上环境摘取了四个代码优化记录分享给大家

    因为前段时间新项目已经完成目前趋于稳定,所以最近我被分配到了公司的运维组,负责维护另外一个项目,包含处理客户反馈的日常问题,以及对系统缺陷进行优化。 经过了接近两周的维护,除了日常…

    Java 2023年6月9日
    082
  • ThreadLocal源码学习笔记

    系列文章目录和关于我 一丶ThreadLocal结构 每一个Thread对象都有一个名为 threadLocals类型为 ThreadLocal.ThreadLocalMap的属性…

    Java 2023年6月14日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球