水无月白_yy 2020-08-27 10:58 采纳率: 0%
浏览 92
已采纳

小白提问之0001——SQL注入问题失效问题

在演示sql注入问题演示的时候,发现有个问题,但是自己弄不明白,请教各位大佬

public static void login() {
        String name = "柳岩' -- ";
        String  id = "1";//模拟密码

        Connection conn = null;
        Statement st = null;
        ResultSet rst = null;
        try {
            conn = JDBCUtils01.getConnection();
            st = conn.createStatement();

            rst = st.executeQuery("select * from user where name = '" + name + "'and id ='" + id+"'");

            //处理结果集
            while (rst.next()) {
                int u_id = rst.getInt(1);
                String u_name = rst.getString("name");
            }
            if (rst.next()) {
                System.out.println("登录成功,欢迎您 " + rst.getString("name"));
            } else {
                System.out.println("用户名或者密码错误");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        JDBCUtils01.release(conn,st,rst);
        }
    }

while (rst.next())是之前写错的,忘记删,演示的时候发现当while存在的时候就会报用户名错误,注释掉就可以了。
求指点~

  • 写回答

2条回答 默认 最新

  • jingluan666 2020-08-27 11:07
    关注

    因为rst.next()读取一条记录,因为数据库只返回了一条,读完了再读就没有了,所以while (rst.next()) 不能加

    另外select * from user不合适,把所有的字段都取出来了,如果表中包含敏感信息,岂不是都返回了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题