SQL注入的方法和解决方案

验收项目时师傅提到的要求有一点是防止SQL注入并找到解决方案,于是找资料好好了解了一下。

(1)什么是SQL注入?

SQL注入就是在系统登陆窗口或其他一切可输入文本中输入一段SQL语句,由于“SQL注入”是利用未过滤/未审核用户输入的攻击方法,其实就是让应用运行本不应该运行的SQL代码,如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果。

(2)SQL注入的表现形式?

例如,在机房登录窗口输入文本处为例,

文本处,

源代码:txtSQL = "select * from user_Info where userID = '" & txtUserName.Text & "'",我们在第一个文本处用户名,如果机房的合法用户张三登陆时在txtUserName中输入“张三”,反映到代码中为:

txtSQL = "select * from user_Info where userID = ' 张三 '  ,接下来就会在数据库中检索是否有张三这个用户,如果有,而且密码对的话就会进入系统。

但是如果我是一个系统入侵者,而且不知道合法的用户名和密码,我就可已在txtUserName处输入a' or 'b'='b,这样一来,反映到SQL语句中就是

txtSQL = "select * from user_Info where userID = ' anything ' or 'b'='b',这样,不管userID是不是正确,我都会保证数据库检索通过,因为'b'='b'这一条件肯定是满足的。

同理,SQL注入还可以应用到其他方面,比如对数据表的删除或窃取用户信息等等非法操作,原理都是一样,比如删除表,只要输入

anything';DROP TABLE user_Info;这样SQL语句就成了txtSQL = "select * from user_Info where userID = ' anything '';DROP TABLE user_Info;,同时执行两个SQL语句,前边虽然无效,但是后边就把我们数据库中的user_Info表删除掉了,如果加上select * from student_Info where studentNo like '%',我们还能窃取所有的student用户的个人信息。

(3)SQL注入的防止方法。

SQL注入对于正式企业来说危害简直是致命的,但是其防止方法很简单,一般SQL注入语句占的字符都很长,我们可以限制可输入文本的输入长度,而且,SQL注入需要输入‘  和空格等字符,我们可以利用ascii键码值来设置不让输入这些字符,如下:

       限制输入长度可以进行长度验证:

啊啊


利用ascii码值限制输入字符:

啊啊

除了以上方法,解决SQL注入方法还有很多 ,例如如果输入卡号时,我们还可以限制登陆者必须使用数字,在SQL中限制SQL同时执行语句条数等方法,但其他不做过多探讨。下面是度娘对防止注入的两条建议:

设置数据库时尽量使用参数化的过滤性语句,还要避免使用解释程序,因为这正是黑客们借以执行非法命令的手段。
避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。



  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值