JDBC中的SQL注入问题

所谓的SQL注入问题意思是:现在有一个SQL语句,如:

“Select * from login where username = ‘xxx’ and password = ‘xxx’ ”,其中xxx是我们需要拼接的内容,当我们拼接一些特殊的字符后会发生一个很神奇的现象,拼接其他的字符串后会改变了原有SQL语句的执行,最终达到欺骗服务器的效果。举个例子:username和password是我们在登录QQ时输入的账号和密码,服务器得到我们输入的信息后,拿着我们输入的信息去数据库中找我们在注册时输入的账号和密码,我们输入的信息和服务器在数据库中找到的信息进行比对,若一样,则QQ登录成功,若用户名或密码有一个错误,则登录失败;

“Select * from login where username = ‘xxx’ and password = ‘xxx’ or ‘ 1 ’ = ‘ 1 ’ ”,如果我们在输入密码的时候,我们这样输入‘xxxx’or‘1’=‘1’,则会发生一个可怕的事情,无论我们的密码输入的正确还是错误,‘ 1 ’ = ‘ 1 ’判断都会为true,为true的结果就是无论密码对不对服务器都会找到正确的密码,从而导致比对成功,则登录成功,也就是说只要知道你的账号,密码随意输入,只要在最后加上‘ 1 ’ = ‘ 1 ’,最后我就可以登录你的账号,所以说SQL注入问题很严重,会让数据库中的数据不安全,存在非常大的隐患,在使用JDBC时一定要避免的问题。所以就有了SQL语句预处理,使用SQL语句预处理的优点:

1.增强了SQL的可读性(之前在拼接时,显得非常乱);

2.可以参数动态化(我们可以通过传参的方式为其中的“ ?”赋值);

3.防止了SQL注入

4.提高了执行性能

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.net/tech/29571.html

发表评论

登录后才能评论