青岛网络公司
站内搜索
青岛网站建设公司
青岛网站建设 在线服务系统
首页 >>网络公司>>网站建设 >>SQL注入的实现原理和防范---青岛畅通网络公司网站建设专家

SQL注入的实现原理和防范

  SQL注入的实现原理和防范
   SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。SQL注入的手法相当灵活,在注入的时候需要根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据.
   SQL注入攻击的总体思路是:
   1. 发现SQL注入位置;
   2. 判断后台数据库类型;
   3. 确定XP_CMDSHELL可执行情况
   4. 发现WEB虚拟目录
   5. 上传ASP木马;
   6. 得到管理员权限;
   一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
   为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。
   如过网站存在注入漏洞,黑客即可使用正常URL后面跟随入侵代码的方式执行任何操作,比如以下列出系统盘目录的命令:
   HTTP://xxx.xxx.xxx/abc.asp?p=YY;insert into temp(id)&nbs ... cmdshell 'dir c:\';
   为了防止注入攻击,最基本的方法是进行关键字过滤,现在推荐两种典型代码,可以全局调用或加在每个动态网页之中.
   <%
   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   'ASP通用防注入代码
   '您可以把该代码COPY到头文件中.也可以单独作
   '为一个文件存在,每次调用使用
   '作者:y3gu - 2007-7-29
   'http://www.dosu.cn
   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Dim GetFlag Rem(提交方式)
   Dim ErrorSql Rem(非法字符)
   Dim RequestKey Rem(提交数据)
   Dim ForI Rem(循环标记)
   ErrorSql = "'~;~and~(~)~exec~update~count~*~%~chr~mid
   ~master~truncate~char~declare" Rem(每个敏感字符或者词语请使用半角 "~" 格开)
   ErrorSql = split(ErrorSql,"~")
   If Request.ServerVariables("REQUEST_METHOD")="GET" Then
   GetFlag=True
   Else
   GetFlag=False
   End If
   If GetFlag Then
   For Each RequestKey In Request.QueryString
   For ForI=0 To Ubound(ErrorSql)
   If Instr(LCase(Request.QueryString(RequestKey)),
   ErrorSql(ForI))<>0 Then
   response.write "<script>alert(""警告:\n请不要使用敏感字符"");location.href=""Sql.asp"";</script>"
   Response.End
   End If
   Next
   Next
   Else
   For Each RequestKey In Request.Form
   For ForI=0 To Ubound(ErrorSql)
   If Instr(LCase(Request.Form(RequestKey)),
   ErrorSql(ForI))<>0 Then
   response.write "<script>alert(""警告:\n请不要使用敏感字符"");location.href=""Sql.asp"";</script>"
   Response.End
   End If
   Next
   Next
   End If
   %>
   第二个
   Function Checkstr(Str)
   If Isnull(Str) Then
   CheckStr = ""
   Exit Function
   End If
   Str = Replace(Str,Chr(0),"", 1, -1, 1)
   Str = Replace(Str, """", """, 1, -1, 1)
   Str = Replace(Str,"<;","<;", 1, -1, 1)
   Str = Replace(Str,">;",">;", 1, -1, 1)
   Str = Replace(Str, "script", "script", 1, -1, 0)
   Str = Replace(Str, "SCRIPT", "SCRIPT", 1, -1, 0)
   Str = Replace(Str, "Script", "Script", 1, -1, 0)
   Str = Replace(Str, "script", "Script", 1, -1, 1)
   Str = Replace(Str, "object", "object", 1, -1, 0)
   Str = Replace(Str, "OBJECT", "OBJECT", 1, -1, 0)
   Str = Replace(Str, "Object", "Object", 1, -1, 0)
   Str = Replace(Str, "object", "Object", 1, -1, 1)
   Str = Replace(Str, "applet", "applet", 1, -1, 0)
   Str = Replace(Str, "APPLET", "APPLET", 1, -1, 0)
   Str = Replace(Str, "Applet", "Applet", 1, -1, 0)
   Str = Replace(Str, "applet", "Applet", 1, -1, 1)
   Str = Replace(Str, "[", "[")
   Str = Replace(Str, "]", "]")
   Str = Replace(Str, """", "", 1, -1, 1)
   Str = Replace(Str, "=", "=", 1, -1, 1)
   Str = Replace(Str, "’", "’’", 1, -1, 1)
   Str = Replace(Str, "select", "select", 1, -1, 1)
   Str = Replace(Str, "execute", "execute", 1, -1, 1)
   Str = Replace(Str, "exec", "exec", 1, -1, 1)
   Str = Replace(Str, "join", "join", 1, -1, 1)
   Str = Replace(Str, "union", "union", 1, -1, 1)
   Str = Replace(Str, "where", "where", 1, -1, 1)
   Str = Replace(Str, "insert", "insert", 1, -1, 1)
   Str = Replace(Str, "delete", "delete", 1, -1, 1)
   Str = Replace(Str, "update", "update", 1, -1, 1)
   Str = Replace(Str, "like", "like", 1, -1, 1)
   Str = Replace(Str, "drop", "drop", 1, -1, 1)
   Str = Replace(Str, "create", "create", 1, -1, 1)
   Str = Replace(Str, "rename", "rename", 1, -1, 1)
   Str = Replace(Str, "count", "count", 1, -1, 1)
   Str = Replace(Str, "chr", "chr", 1, -1, 1)
   Str = Replace(Str, "mid", "mid", 1, -1, 1)
   Str = Replace(Str, "truncate", "truncate", 1, -1, 1)
   Str = Replace(Str, "nchar", "nchar", 1, -1, 1)
   Str = Replace(Str, "char", "char", 1, -1, 1)
   Str = Replace(Str, "alter", "alter", 1, -1, 1)
   Str = Replace(Str, "cast", "cast", 1, -1, 1)
   Str = Replace(Str, "exists", "exists", 1, -1, 1)
   Str = Replace(Str,Chr(13),"<;br>;", 1, -1, 1)
   CheckStr = Replace(Str,"’","’’", 1, -1, 1)
   End Function

TAGS:sql注入工具,sql注入原理,sql注入攻击,sql注入漏洞,sql注入工具下载,防止sql注入,sql注入教程,sql注入攻击工具包,如何防止sql注入?


关于我们|友情链接|代理中心|商务快车|主机托管|服务器租用|服务器托管|支票打印软件|青岛百度推广baidu|青岛手机邮箱
青岛分类信息网软件下载|手机短信群发|青岛人才中心|青岛google|青岛专题片纪录片制作|青岛软件销售中心|led电子显示屏|青岛光盘制作
青岛手机短信群发|青岛网络公司|青岛电脑维护公司|
技术支持|青岛通用网址|青岛中文域名注册|网站导航网站导航Site Map

© 2000-2008 Copyright all rights reseved

售前全国免费咨询电话:8007088282 (谢绝推销者)
手机用户及未开通800电话的地区:0532-86068656 (谢绝推销者)
传真:4007085198-88656(全国接入只收市话)
本站域名:青岛网络公司.cn  青岛网络公司.com

手机网站:http://wap.0532163.com

业务邮箱:

在线投诉/表扬   故障提交  在线留言   友情连接QQ:点击这里交换连接 876811113

 

畅通网致力于网络营销,互联网应用的知名服务商


青岛网上报警

1 公安局备案:

  青岛网络公司青岛市公安局备案号:37020020052265

2 经营许可证:

  《中华人民共和国增值电信业务经营许可证》 鲁 B2-20041017号

3 法人营业执照:

  企业法人营业执照:注册号:3702022802887-A

4 ICP备案证:

  鲁ICP备05042073号