- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络安全之防SQL注入攻击浅析.doc
网络安全之防SQL注入攻击浅析
摘 要:当前计算机网络不断的发展,伴随而来的就是计算机网络结构的复杂化。网络安全已经摆在我们每个计算机用户的面前,各计算机用户都不断的采用很多网络安全的措施,加强网络安全防范.但同时,网络非法攻击活动也在不断地更换各种攻击方式方法,寻找最薄弱环节,伺机非法入侵,所以计算机网络安全管理就成为了网络研究的重点,特别是SQL注入攻击这种常见的,多发的网络攻击成为研究当下网络安全管理的焦点。
关键词:网络安全;SQL注入攻击;防范get注入;防范post注入;防范cookies注入
中图分类号:TP393.18
1 SQL注入攻击相关概念
1.1 攻击简介
SQL注入通常是从万维网端口开始访问,一般给我们基本的web访问没有太大的差别,因此常规情况下,防火墙都不会对SQL注入发出警报,如果用户没有查看ⅡS日志的习惯,极有可能遭受长时间的攻击都不知道。
1.2 SQL注入攻击原理
要阐述SQL注入攻击原理我们以登录验证中的模块为例,说明SQL注入攻击的实现方法。SQL注入攻击往往是SQL语法中的一部分,通过执行SQL语句而执行入侵者的想要的操作。在登陆模块中,一般有用户名(username)和密码(password)两个参数,其原理是通过查找user表中的用户名(username)和密码(password)的结果来进行授权访问,典型的SQL查询语句为:
Select*from users where username=admin and password=smith’
假如给username和password赋值“adminor 1=1--”和“aaa”则SQL脚本解释器中的程序代码就变成:
select*from users where username=’admin’ or 1=1―and password=’aaa’
通过上面代码就可以在输入参数中构建SQL语法,且可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作,这就是SQL注入攻击的主要原理
1.3 入侵操作步骤
(1)找一个类似http://xxx.xxx.xxx/abc.asp?p=YY的网站。
(2)在http://xxx.xxx.xxx/abc.asp?p=YY后面追加“and 1=1”,并访问该网址即http://xxx.xxx.xxx/abc.asp?p=YY and 1=1应该与访问原地址得到的结果相同。
(3)在http://xxx.xxx.xxx/abc.asp?p=YY后面追加“and 1=2”,并访问该网址即
http://xxx.xxx.xxx/abc.asp?p=YY and 1=2应该与访问原地址得到的结果不同,并提示数据库错误。
((2),(3)同时满足则此网站必定存在SQL漏洞。)
(4)访问http://xxx.xxx.xxx/abc.asp?p=YY and exists (select*from网站数据库常用表段名)网站数据库常用表段名:admin users administrator等,如果进入的网页像步骤二一样,是正常网页,证明存在该表段名。找寻该SQL数据库使用的表名,进而寻找网站的管理员名、密码等信息。我们可以通过Socket编程,把常用表段名写成一个链表,通过Socket编程遍历一边,并找到可入侵点。
(5)访问http://xxx.xxx.xxx/abc.asp?p=YY and exists select*from第四步找到的可入侵表名。
2 如何防止SQL注入
2.1 永远不要信任用户的输入
对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双-进行转换等。
在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO.NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。
例如,在ADO.NET里对动态SQL,你可以像下面这样重写上述的语句,使之安全:Dim SSN as String=Request.QueryString(SSN)
Dim cmd As new SqlCommand(SELECT au_lname,au_fname FROM authors WHERE au_id =@au_id)
Dim param=new SqlParameter(au_id,SqlDbType.VarChar)
文档评论(0)