首页 > 代码库 > SQL注入漏洞

SQL注入漏洞

SQL注入:

     SQL注入是指在数据库应用程序中用户向应用程序提交的输入数据中包含SQL查询串从而达到某种目的的攻击方式。

     当应用程序使用输入内容来动态的创建SQL语句以访问数据库时会发生SQL注入攻击

例子:

   select * from table where name=‘"+un+"‘ and psw=‘"+pw+"‘",

    假如可以输入任何字符,un随便输入12345‘ or 1=1--

    这样提交过来的aa就会select * from table where name=‘12345‘ or 1=1--password...就会查出来

防范措施:

  1.对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。检查客户端提交的参数,对含有"exec、insert 、select 、delete 、from 、update、count 、user 、xp_cmdshell、add 、net 、Asc"等字符的输入参数,不予响应。addslashs()和mysql_escape_string()在防sql注入时经常使用。

 2. 对数据库中存放的用户密码加密,比如用MD5()加密和shal()加密。

 3. 应用程序生成SQL 查询串,尽量不要使用字符串拼接,而使用参数化的输入或者直接使用存储过程进行数据查询存取。

 4. 数据库安全措施:建议不要windows 的管理员、sa、数据库的所有者作为应用程序连接SQL Server 的用户。为应用程序创建一个用户,该用户只能执行select 

    语句和指定的储存过程,对系统表和系统存储过程没有访问权限。

 

 

 

 

SQL注入漏洞