标签:语句 PreparedStatement rs atm 拼接 SQL aname 注入
跟字符串拼接有关
1.SQL注入
所谓的SQL注入
意思就是通过SQL命令 拼接其他的字符串
让其他的那些字符串来改变原有SQL语句的执行
最终达到欺骗服务器的效果
里面拼接的其他字符 肯定是SQL语法认可的合法的字
select * from atm
where aname = 'xxx' and apassword = 'xxx' or '1' = '1'
2.问题产生的原因
1.判断不严谨导致的
2.SQL语句问题 允许拼接字符串 认为用户很不安全
3.可以利用PreparedStatement来处理SQL
Statement PreparedStatment
普通的状态 参数 预处理状态参数
创建时不需要SQL 创建时就需要预先加载SQL语句
此时没有执行 此时没有执行 但 底层预先处理SQL需要查询的结果 性能高
可以利用动态化进行参数的处理 利用?代替 数据类型及值
好处 1.增强SQL可读性 2.可以参数动态化 3.防止SQL注入 4.提高执行性能
3.模糊查询---->
like "%%"
//预处理小案例
Class.forName(className);
Connection conn = DriverManager.getConnection(url,user,password);
PreparedStatement pstat = conn.prepareStatement(sql);//预处理状态参数
//给sql语句中的问号赋值
pstat.setString(1,aname);
ResultSet rs = pstat.executeQuery();
//将结果集内的信息取出来 存入一个对象
if(rs.next()){
atm = new Atm();
atm.setAname(rs.getString("aname"));
atm.setApassword(rs.getString("apassword"));
atm.setAbalance(rs.getFloat("abalance"));
标签:语句,PreparedStatement,rs,atm,拼接,SQL,aname,注入 来源: https://blog.csdn.net/m0_51945027/article/details/113619896
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。