SQL注入是什么,怎么防止SQL注入?
一、什么是SQL注入?
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。
二、SQL注入总体思路
1、寻找到SQL注入的位置
2、判断服务器类型和后台数据库类型
3、针对不通的服务器和数据库特点进行SQL注入攻击
三、以登录为案例,数据库为MySQL,要求输入用户名和密码
点击登陆,如果没有做特殊处理,那么这个非法用户就很得意的登陆进去了。(当然现在的有些语言的数据库API已经处理了这些问题)
从理论上说,后台认证程序中会有如下的SQL语句:
String sql="select * from table where username='"+userName+"’and password='"+password+” '”;
当输入了下面的用户名和密码,上面的SQL语句变成:
SELECT * FROM table WHERE username='1’or 1=1 # and password=''
条件后面username=‘1’ or 1=1 然后后面加#将后面的语句注释,让他们不起作用,这样语句就是恒真了,用户能轻易骗过系统,获取合法身份。SQL注入还可以用来删除、添加、修改数据库中的记录等等…
四、怎么防止sql注入?
1、不要图一时方便使用SQL语句直接拼接。
2、如果用SQL语句,那就使用参数化,添加Param。
3、尽可能的使用存储过程,安全性能高而且处理速度也快。
4、屏蔽SQL注入。