码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java代码审计sql注入基础


    Sql审计方法

    手动找的话,可以直接找到sqlmapper.xml文件或者直接搜索 select、update、delete、insert “String sql=”等关键词,定位SQL xml配置文件。

    如果 sql 语句中有出现 $ 进行参数拼接,则存在SQL注入风险。

    当找到某个变量关键词有 SQL 注入风险时,可以再根据调用链找到该存在注入风险的业务逻辑代码,查看参数来源是否安全、是否有配置SQL危险参数过滤的过滤器,最终确认是否存在SQL注入。以下给出可能造成sql注入攻击的关键字,审计时可根据实际情况进项查找。

    JDBC注入

    1、以前,人们通过这种方式从数据库获取数据

    public User getUserById(String id) throws SQLException {
        Connection connection = JDBCTOOLS.getConnection();
            String sql = "select id,username from user where id=" + id;
            Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);

        resultSet.next();
        int userId = resultSet.getInt(1);
        String username = resultSet.getString(2);
        User user = new User(userId, username);
        return user;
    }

    预编译处理后的代码(修复后代码)

    String sql = "select id,username from user where id= ?"

    但是预编译只能处理查询参数,很多场景下仅仅使用预编译是不够的。

    2、like情况

    在使用模糊查询的场景中 :

    String sql = "select * from user where username like '%?%'";

    这种写法是无法进行预编译的,程序会报错。

    3、order by

    需要按照时间、id等信息进行排序的时候,也是无法使用预编译的。

    order by与like一样,要分两步走才可避免情况
    需要按照时间、id等信息进行排序的时候,也是无法使用预编译的, sort=123

    String sort = req.getParameter("sort");

    String sql = "select * from user order by ?";
    PreparedStatement preparedStatement = conn

  • 相关阅读:
    打地鼠小游戏
    Go 编程起航:十万字总结助你开启编程大门 - Golang 基础篇
    rman管理删除oracle数据库日志
    XGBoost原生接口和Sklearn接口参数详解
    企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势
    莫能菌素人血清白蛋白纳米粒Monensin-HSA|合成路线
    微信小程序-组件
    Element UI库 之 el-upload 图片上传组件多次上传或重新上传失效bug
    第五章 Ambari二次开发之自定义Flink服务概述
    【云计算】三种云服务
  • 原文地址:https://blog.csdn.net/m0_55772907/article/details/127785622
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号