本文整理自网络,侵删。
目录
- 一、SQL注入简介
- 二、SQL注入攻击的总体思路
- 三、SQL注入攻击实例
- 四、如何防御SQL注入
- 1、检查变量数据类型和格式
- 2、过滤特殊符号
- 3、绑定变量,使用预编译语句
- 小结:
一、SQL注入简介
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。
二、SQL注入攻击的总体思路
- 1.寻找到SQL注入的位置
- 2.判断服务器类型和后台数据库类型
- 3.针对不同的服务器和数据库特点进行SQL注入攻击
三、SQL注入攻击实例
比如在一个登录界面,要求输入用户名和密码:
可以这样输入实现免帐号登录:
用户名: ‘or 1 = 1 –
密 码:
点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)
这是为什么呢? 下面我们分析一下:
从理论上说,后台认证程序中会有如下的SQL语句:
String sql = "select * from user_table where username= ' "+userName+" ' and password=' "+password+" '"; 当输入了上面的用户名和密码,上面的SQL语句变成: SELECT * FROM user_table WHERE username= ''or 1 = 1 -- and password='' """ 分析SQL语句: 条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功; 然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。 这还是比较温柔的,如果是执行 SELECT * FROM user_table WHERE username='' ;DROP DATABASE (DB Name) --' and password='' 其后果可想而知… """
四、如何防御SQL注入
注意:但凡有SQL注入漏洞的程序,都是因为程序要接受来自客户端用户输入的变量或URL传递的参数,并且这个变量或参数是组成SQL语句的一部分,
相关阅读 >>
sqlserver探讨exec与sp_executesql的区别详解
oracle中以insert values的形式同时插入多条记录
更多相关阅读请进入《sql》频道 >>
书籍 数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 防止web项目中的SQL注入
标签:sql相关推荐
评论
管理员已关闭评论功能...