SQL注入攻击及防范
一.什么是SQL注入
1.SQL注入的定义
SQL注入(SQL Injection) 利用了程序中的SQL的漏洞,进行攻击的方法。
2.SQL注入举例
1)利用SQL语法错误获取数据库表的结构信息:
攻击者要成功实施一次攻击,需要了解哪个表和列可用。SQL Server默认的行为是,当不正确查询运行时返回错误消息。
例如攻击者输入用户名:“'having 1=1;--”,数据库将返回包含表名和代码查询中第一列的错误消息;
而group by语句可以更进一步确定查询中的列:“'group by 表名.列名 having 1=1;--”,
数据库将返回查询中的下一列;攻击者可以继续附加group by语句,直到不再收到错误消息。
2)获取数据库内容信息:
攻击者可以利用变换错误消息,获取数据库中存储的数据,
例如输入用户名:“'union select min(username),1 from users where username>1;--”,
数据库将返回表中的第一个用户名。
攻击者可以使用同样的SQL注入,用password代替username得到用户账户的密码,以此类推,可以获取数据库表中的每条记录。
3)使用的 '-- 或 ' or 1=1-- 缩短查询条件
select username from users
Where username=’admin’--’and password=’123’
4)修改数据库表的内容:
攻击者通过“';”来结束一条查询语句,然后附加破坏性的SQL语句,
例如:“';delete from Accounts”或“';insert into Users (……)”。
select username from users
Where username=’admin’;drop table users --’
and password=’123’
5)通过SQL访问操作系统
Select username from users
Where username=’admin’; EXEC xp_cmdshell 'net user haker 123456 /add’--’ and password=’123’
二.如何防范SQL注入
1.避免拼接SQL
2.使用存储过程
3.使用参数化SQL
SqlParameter可以提供类型和长度检查,并自动转义用户输入。
Select username from users where username=@username
And password=@password
4.限制长度
5.录入验证,类型检查
Select title from news where id=123; delete from news
6.过滤或转义危险字符
inputSQL.Replace("'", "''");
’ ; -- /* */ xp_
7.在服务器上处理错误:
成功的SQL注入攻击不一定导致错误;导致错误的SQL注入通常是攻击者正在收集数据库信息,是攻击的前兆。
在 try..catch..finally中处理错误;
<compilation debug="false"/>;
<customErrors mode="RemoteOnly"/>。
8.程序所使用的数据库帐户最少的权限
SQL注入攻击及防范的更多相关文章
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- SQL注入攻击
SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候, ...
- mysql注入攻击及防范
一.注入攻击种类 1. GET注入 输入参数通过URL发送. 2. POST注入 输入参数通过HTTP正文发送 3. COOKIE注入 ...
- ASP.NET中的SQL注入攻击与防护
什么是SQL注入攻击? 它是在执行SQL查询的时候,由于接收了用户的非法参数从而导致,所执行的SQL语义与业务逻辑原本所要查询的语义不相符,从而实现的攻击. 例如我们经常使用的用户登录,通常会出现这样 ...
- 【数据库】SQL注入攻击
背景: 机房收费系统验收的时候,师父提到SQL注入攻击.自己以前看过类似的博客大概知道一些这方面的事情,于是自己动手查了查. 定义: 所谓SQL注入,通过SQL命令插入到Web表单提交或者输入域名或页 ...
- SQL注入攻击的种类和防范手段
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...
- 防范 SQL 注入攻击
防范 SQL 注入攻击 我们执行的 SQL语句中包含变量,执行的时候会直接把变量内容替换进去.而如果攻击者在输入框中输入一些危险的字符(通常包含 SQL 注释符 --,以及其他预先精心设置的内容), ...
- web安全防范之SQL注入攻击、攻击原理和防范措施
SQL注入 攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击包括可以通过SQL语句做的任何事 ...
- web攻击之三:SQL注入攻击的种类和防范手段
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...
随机推荐
- replace()替换文字扑获组做法
var txt = "12312131283", str = txt.replace(/(12(.3))/g,"中文$2");//$1是针对前面的扑获组()的如 ...
- 团体程序设计天梯赛-练习集L1-009. *N个数求和
L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...
- leetcode5 Implement strstr() 实现strstr函数功能
Implement strstr() 实现strstr函数功能 whowhoha@outlook.com Question: Implement strstr(). Returns the index ...
- hdu 1018
数学题 用的这个方法比较烂 g++超时 c++ 406ms /******************************************************************* ...
- pythn BeautifulSoup
http://rsj217.diandian.com/post/2012-11-01/40041235132 Beautiful Soup 是用 Python 写的一个 HTML/XML 的解析器,它 ...
- 正确使用STL-MAP中Erase函数
一切尽在代码中. #include <iostream> #include <map> #include <string> using namespace std ...
- POJ1860——Currency Exchange(BellmanFord算法求最短路)
Currency Exchange DescriptionSeveral currency exchange points are working in our city. Let us suppos ...
- WCF 传输的序列化
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService”.[ServiceContract]public interface IService{ [O ...
- jquery uploadify上传文件插件导致浏览器崩溃问题解决方法
自谷歌浏览器更新到(版本39.0.2171.99 )后,访问上传文件界面浏览器就崩溃了,而其他的浏览器不会出现问题. 出现这种问题的原因就是谷歌浏览器缓存问题,但将访问该jsp页面路径添加上时间戳后无 ...
- jquery serialize()方法的扩展
Jquery提供的序列化表单方法serialize方法确实方便,但是我在使用的时候发现了一个弊端:当我使用type:“post”进行ajax请求的时候, 这个时候参数data:$("#myf ...