ado.net防止sql注入
2014-12-15 17:49
232 查看
简介:当web平台真正上线之后,遇到的问题之一就是黑客攻击的问题,攻击的手段中常用的手段就是DDOS和sql注入,关于DDOS攻击,也就是分布式拒绝服务式攻击,就是黑客黑掉大量pc机之后,发下命令,全部被黑的机器同时去访问服务器,当超出服务器的负载时,服务器就是down掉,也就达到了一定的目的,这种攻击,在程序中用技术是解决不了的,最简单的办法就是拼money,加大带宽,服务器等等,其他的方法,就不多说了,来说另一种攻击,sql注入,这种攻击,是很多古老的手段,也是简单的攻击手段,据统计,目前的服务器攻击中,大约有2成是这种攻击,这种手段的原理就是,利用web平台主要是form表单提交时留下的漏洞,通过填写特殊文本,来改变开发人员的sql语句,按照自己的意愿来执行sql,并通过web服务器的漏洞,获取sql执行的结果,来达到自己的阶段目的
1.早期sql注入
asp时期,黑客通过扫描,找到web中form提交时的漏洞,来改变执行的sql,如果这时配置服务器大意,让异常或者错误发送到客户端,则黑客可以通过这种简单的方式,获取数据库,版本,数据库名,表名,查询任意数据,更甚者,可以增删改数据,web平台也就相应的瘫痪了,现在的asp.net和新版本的iis默认情况下是不允许错误发送的客户端的,除非你强制可以发送,但是用户的输入中的sql注入,还需要我们自己来解决
2.目前sql注入
上面已经说了,目前sql注入,主要是通过,扫描form提交数据的漏洞,揣测执行的sql,通过拼接特殊的文本,来达到按照自己的意愿来执行sql的目的,这种风险主要在于执行sql前没有检查sql的合法性
3.防范
在用.net中开发web时,用到的持久层有,ado.net,ibatisnet,ef,nhibernate,早起的还有linq to sql等,下面说说自己对各个持久层防止sql注入方法的理解
ado.net 中,我们用ado.net操作数据库,最大的优点就是灵活,ado.net操作数据库,通过sqlcommand,我们可以指定文本和存储过程,两种方式,文本中我们可以自己拼接sql和使用sqlparameter,如果我们使用前一种方法,就要自己来验证用户的输入,主要是string的输入是否合法,如果我们用sqlparameter凡事,开发人员就不用担心会被sql注入了,这是因为,ado.net拼接执行的sql前,会验证sqlparameter中字符串的合法性,有效的阻止了sql注入,关于具体的防止原理,个人推测应该是,按照关键字进行处理,比如;
' - -/**/ 等字符的处理,存储过程中,也建议采用参数方式,让ado.net来为我们自动阻止sql注入
ibatisnet中,在这个办自动化orm中我们只需要在map文件中,写sql的时候,把$field$替换成#field#即可,这样框架便会自动阻止sql注入
ef,nhibernate,linq to sql 等orm框架,都是通过底层封装调用ado.net的方式来阻止sql注入的,不需要我们特殊的配置
ps:上面简单的谈了下自己对sql注入的理解,今天就到这里吧
1.早期sql注入
asp时期,黑客通过扫描,找到web中form提交时的漏洞,来改变执行的sql,如果这时配置服务器大意,让异常或者错误发送到客户端,则黑客可以通过这种简单的方式,获取数据库,版本,数据库名,表名,查询任意数据,更甚者,可以增删改数据,web平台也就相应的瘫痪了,现在的asp.net和新版本的iis默认情况下是不允许错误发送的客户端的,除非你强制可以发送,但是用户的输入中的sql注入,还需要我们自己来解决
2.目前sql注入
上面已经说了,目前sql注入,主要是通过,扫描form提交数据的漏洞,揣测执行的sql,通过拼接特殊的文本,来达到按照自己的意愿来执行sql的目的,这种风险主要在于执行sql前没有检查sql的合法性
3.防范
在用.net中开发web时,用到的持久层有,ado.net,ibatisnet,ef,nhibernate,早起的还有linq to sql等,下面说说自己对各个持久层防止sql注入方法的理解
ado.net 中,我们用ado.net操作数据库,最大的优点就是灵活,ado.net操作数据库,通过sqlcommand,我们可以指定文本和存储过程,两种方式,文本中我们可以自己拼接sql和使用sqlparameter,如果我们使用前一种方法,就要自己来验证用户的输入,主要是string的输入是否合法,如果我们用sqlparameter凡事,开发人员就不用担心会被sql注入了,这是因为,ado.net拼接执行的sql前,会验证sqlparameter中字符串的合法性,有效的阻止了sql注入,关于具体的防止原理,个人推测应该是,按照关键字进行处理,比如;
' - -/**/ 等字符的处理,存储过程中,也建议采用参数方式,让ado.net来为我们自动阻止sql注入
ibatisnet中,在这个办自动化orm中我们只需要在map文件中,写sql的时候,把$field$替换成#field#即可,这样框架便会自动阻止sql注入
ef,nhibernate,linq to sql 等orm框架,都是通过底层封装调用ado.net的方式来阻止sql注入的,不需要我们特殊的配置
ps:上面简单的谈了下自己对sql注入的理解,今天就到这里吧
相关文章推荐
- 如何防止ASP.NET应用程序中的SQL注入安全漏洞
- ADO.NET学习之防止SQL注入,存储过程,SqlDataReader
- C#,Asp.net 防止Sql 注入代码
- .NET防止SQL、JS、HTML注入
- 关于SQL漏洞注入(Ado.Net)
- 21.2015.08.13第二十三课ado.net3(增删改查、get传值、post传值、SQL防注入、调存储过程、SQLHELPER)
- ADO.NET复习总结(3)--参数化SQL语句--防止sql注入式攻击
- 如何防止ASP.NET应用程序中的SQL注入安全漏洞
- 黑马程序员--ADO.NET学习之SQL注入漏洞攻击
- asp.net 如何防止SQL注入
- 如何防止Sql语句的注入?
- 在ASP.NET中防止注入攻击
- sql2005 reporting service,我总算找到一个完全程序化绑定报表(ado.net dataset 绑定reprot)的方案,谁能再给我些其他建议呢?
- 在ASP.NET中防止注入攻击
- 在ASP.NET中防止注入攻击
- jsp防止sql语句注入
- 在ASP.NET中防止注入攻击
- 在ASP.NET中防止注入攻击
- 在ASP.NET中防止注入攻击[翻译]
- Net程序如何防止被注入(整站通用)