| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
URL编码与SQL注入
作者:佚名    文章来源:不详    点击数:    更新时间:2006-9-14
 

说到url编码,你或许会想起N年前的url编码漏洞。可惜我是“生不逢时”啊,我接触网络时,那个漏洞早就绝迹咯。

言归正传,URL 编码是什么东东呢?看看我从网上抄的定义:

引用: url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况, 在服务器端的表单输入格式样子象这样:

theName=Ichabod+Crane&gender=male&status=missing&headless=yes

URL编码遵循下列规则: 每对name/value由&符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, &, 和 % 这些特殊的字符。


呵呵,明白了吧,其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是\。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。呵呵,知道怎么转换的了吧。

URL编码平时我们是用不到的,因为IE会自动将你输入到地址栏的非数字字母转换为url编码。所以对于浏览器来说http://blog.csdn.net/l%61ke2与http://blog.csdn.net/lake2是等效的(注意,第一个url我用%61替换了a)。呵呵,或许你已经想起了,有人提出数据库名字里带上“#”以防止被下载,因为IE遇到#就会忽略后面的字母。破解方法很简单——用url编码#替换掉#。我本来企图利用url编码来躲过注射检查的,不过失败了,因为服务器端会将url编码转换成字符的。

等等,好像跑题了啊,呵呵,不好意思:)

现在SQL注射非常流行,所以就有人写了一些防注射的脚本。当然啦,思路不一样,效果大不同。各位看官请看下面的××SQL通用防注入asp版部分代码。

          Fy_Url=Request.ServerVariables("QUERY_STRING")
          Fy_a=split(Fy_Url,"&")
          redim Fy_Cs(ubound(Fy_a))
          On Error Resume Next
          for Fy_x=0 to ubound(Fy_a)
                     Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
          Next
          For Fy_x=0 to ubound(Fy_Cs)
                    If Fy_Cs(Fy_x)<>"" Then
                           If Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 then
                                  Response.Write "出现错误!"
                                  Response.End
                           End If
                    End If
        &nbs

[1] [2] 下一页


相关文章