论坛登陆 注册 教程 笑话 影视 投稿
首页 | 页界资讯 | 网络应用 | 软件应用 | 组网技术 | 网络原理 | 聊天通讯 | 网管知识 | 帮助
笑话 | 操作系统 | 注 册 表 | 编程开发 | 数 据 库 | 媒体动画 | 网页设计 | 图形图象 | 地图
论坛 | 网络安全 | 安全防范 | 服 务 器 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
影院 | 教育频道 | 特色专题 | 精文荟萃 | 注 册 码 | 论坛社区 | 网站地图 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>编程开发>>net专区>>正文

ASP.NET中如何防范SQL注入式攻击

www.xker.com 作者: 来源:51CTO.com整理 加入日期:2006-4-7 8:42:27

【问题提问、论坛交流】 

一、什么是SQL注入式攻击?

所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击常见的SQL注入式攻击过程类如:

⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码

⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数下面是ASP.NET应用构造查询的一个例子:站长资讯网:http://www.net118.com

System.Text.StringBuilder query = new System.Text.StringBuilder(

"SELECT * from Users WHERE login = '")

.Append(txtLogin.Text).Append("' AND password='")

.Append(txtPassword.Text).Append("'");

⑶ 攻击者在用户名字和密码输入框中输入"'或'1'='1"之类的内容

⑷ 用户输入的内容提交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成:SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'

服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比

⑹ 由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者

如果攻击者知道应用会将表单中输入的内容直接用于验证身份的查询,他就会尝试输入某些特殊的SQL字符串篡改查询改变其原来的功能,欺骗系统授予访问权限

系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定如果用户的帐户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表

二、如何防范?

好在要防止ASP.NET应用被SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了过滤输入内容可以按多种方式进行

⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:

第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义再来看前面的例子,“SELECT * from Users WHERE login = ''' or ''1''=''1' AND password = ''' or ''1''=''1'”显然会得到与“SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'”不同的结果

第二:删除用户输入内容中的所有连字符,防止攻击者构造出类如“SELECT * from Users WHERE login = 'mas' -- AND password =''”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限

第三:对于用来执行查询的数据库帐户,限制其权限用不同的用户帐户执行查询、插入、更新、删除操作由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或DELETE命令

本新闻共2页,当前在第1页  1  2  

编辑:xker.com

上一篇:在ASP.NET中访问SQL Server
下一篇:没有了
关闭窗口】【技术交流】【收藏此页
相关文章
·在ASP.NET中访问SQL Server·用ObjectSpaces重建IBuySpy的数据访问·ASP.NET:访问Excel 电子表格
·用ASP.NET在同一网页中显示主从关系表·ASP.NET+MySQL:强势组合·asp.net 2.0中的URL重写以及urlMappi
·ASP.NET 2.0无刷新页面新境界·在ASP.net中使用OWC绘制统计图表·ASP.NET中Web DataGrid的使用指南
·ASP.NET编程中的技巧·几个ASP.NET技巧·使用反射将业务对象绑定到 ASP.NET 窗
·检测含有中文字符串的实际长度·在ASP.Net中两种利用CSS实现多界面的·ASP.NET画图全攻略(下)
推荐文章 最新文章 热门文章
·联手杀毒软件 打造无毒迅雷下载文件
·Tomcat 配置技巧精华详解分析
·玩转系统 Window系统补丁知多少
·做好备份 硬盘数据大迁移
·中用也中看 全面打造个性化迅雷下载
·WIN2000下JSP服务器的安装
·Oracl数据库中大数据的备份
·用注册表找回常用软件序列号
·搜索引擎优化的最高境界是忘记搜索引
·全面解析系统剪贴功能资源占用
·在ASP.NET中防止注入攻击
·仅用css编写无限分级弹出菜单
·完整图解Tomcat 5.0.28 安装笔记
·用Java快速开发Linux GUI应用
·妙用Windows磁盘配额 让黑客无从下手
·ASP.NET中如何防范SQL注入式攻击
·在ASP.NET中访问SQL Server
·微软承认修改IE失误 将提供兼容补丁
·联手杀毒软件 打造无毒迅雷下载文件
·Tomcat 配置技巧精华详解分析
·安全攻略:突破组策略运行限制的方法
·解读珊瑚虫CoralQQ.ini代码的秘密
·玩转系统 Window系统补丁知多少
·做好备份 硬盘数据大迁移
·Maxthon实用插件之闹钟篇
·为Windows XP设置一个隐形密码
·在多个QQ号码间共享自定义表情的技巧
·用ObjectSpaces重建IBuySpy的数据访问
·ASP.NET:访问Excel 电子表格
·不用SQL语句查询DataTable中的数据
·个人简历表格
·免费代理IP(每日更新)
·QQ密码丢失后能做的事情:快速找回密码
·QQ收费头像免费使用的方法 
·Norton AntiVirus 2006 注册码(激活
·系统优化 专题
·WinRAR 3.51 注册码
·豪杰超级解霸V9.1正版注册码
·找回QQ密码的注意事项 
·史上最强QQ个人档案资料欣赏
·Ajax技术开发指南
·QQ空间皮肤代码
·最经典的黑客入门教材
·求职简历封皮
·ACDSee v8.0注册码
评论

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2006 xker.com All rights reserved.小新技术网 合作广告QQ:12231446
本页浏览次数: