.NET网站防SQL注入方法

点赞:22835 浏览:106336 近期更新时间:2024-03-12 作者:网友分享原创网站原创

【摘 要]SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗怎么写作器执行恶意的SQL命令.文章简要介绍了基于ASRNET网站的SQL注入原理,总结出了一套相关的比较有效的防御方案,并加以较为详细的阐述.

【关 键 词】ASRNET;SQL注入;防SQL注入

中图分类号:TP39文献标识码:A文章编号:1006-0278(2013)01-088-01

一、引言

随着互联网技术的发展,网络应用越来越普及,各大企事业单位都建构起自己基于B/S三层模式的动态网站,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,所以有必要了解SQL注入攻击的原理及其实现过程,尽可能多的采取防范措施,以保证网站的安全性.

二、SQL注入攻击技术简介

SQL注入攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗怎么写作器执行恶意的SQL命令,以获取用户等敏感信息,进而获取主机控制权限的攻击方法.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击.

SQL注入的类型从最初的“1等于1”型到现在的SQLServer存储过程和扩展存储过程注入,SQL注入迄今为止已经被发现数十种.总的来说,它的分类可以从SQL语言的自身进行,它可以分为授权旁路型、SELECT型、INSERT型、其它型(如SQLServer存储过程).如前所述,SQL语言中的数据查询部分(SELECT语句)是SQL语句中最灵活、功能最强的部分,因此,该部分的SQL注入也种类繁多,主要有基本SE-LECT型、基本集合(UNION)型、语法错误型列举、匹配(HKE)型、——结尾型等.

三、基于ASRNET网站的SQL注入防范措施

(一)校验用户输入从而防止注入式攻击

1.使用RegularExpressionValidator控件

在ASRNET中,RegularExpressionValidator控件是一个强大的工具.它可以检验文本是否和定义的正则表达式中的模式匹配.只需要简单地配置ValidationExpression属性的-正则表达式即可.正则表达式也是一个强大的工具,它允许指定复杂的规则,该规则指定字符和字符顺序(位置和出现次数).为防止用户输入一些危险的字符,可以利用该正则表达式“^[0-9A-Za-z]+$”,该表达式表示的意思是用户只可以输入字母和数字.要运用该正则表达式,只需在将其赋值给Regu-larExpressionValidator控件的ValidationExpression属性即可.

2.使用强数据类型


使用强数据类型,将数字类型的输入指定为Integer或者Double的类型;将字符输入指定为String数据类型;将日期时间输入指定为DateTime类型.

.NET网站防SQL注入方法参考属性评定
有关论文范文主题研究: 关于数据库的论文范文资料 大学生适用: 高校毕业论文、研究生论文
相关参考文献下载数量: 73 写作解决问题: 本科论文怎么写
毕业论文开题报告: 文献综述、论文题目 职称论文适用: 期刊发表、职称评副高
所属大学生专业类别: 本科论文怎么写 论文题目推荐度: 最新题目

(二)过滤SQL语句,防止注入

通过过滤SQL语句,禁止在SQL语句出现“exec,master,delete,truncate,declare,create,Xp”这些字符.

(三)将用户登录名称、等数据加密保存

加密用户输入的数据,如采用MD5加密,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令.System.Web.Security.Form-sAuthentication类有一个Has-hPasswordForStoringInConfigFile,非常适合于对输入数据进行“消毒”处理.

(四)SQL语句使用类型安全的参数方式

SQLServer的参数(Parameters)集合提供类型检测和长度检测,使用参数集合,输入的内容将被视为文本值而不是可执行代码,数据库不会执行包含在其中的代码.使用参数集方式可以严格限定输入的类型和长度,如果输入超出范围将会触发异常.

SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击.此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了.

四、总结

由于SQL注入攻击针对的是应用开发过程中的编程不严密,只要对SQL语言足够熟悉,时刻注意SQL注入的危险,就可以采取相应的防护措施,不断完善编程,提高网络应用程序的安全性.