ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL注入+PreparedStatement使用

2021-02-03 21:33:53  阅读:204  来源: 互联网

标签:语句 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有