|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;编码|编码说到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编码就是%5c。那末汉字的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编码%23交换失落#。我原本妄图使用url编码来躲过打针反省的,不外失利了,由于服务器端会将url编码转换成字符的。
等等,仿佛跑题了啊,呵呵,欠好意义:)
如今SQL打针十分盛行,以是就有人写了一些防打针的剧本。固然啦,思绪纷歧样,效果年夜分歧。列位看官请看上面的××SQL通用防注进asp版部分代码。
Fy_Url=Request.ServerVariables("QUERY_STRING")
Fy_a=split(Fy_Url,"&")
redimFy_Cs(ubound(Fy_a))
OnErrorResumeNext
forFy_x=0toubound(Fy_a)
Fy_Cs(Fy_x)=left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
Next
ForFy_x=0toubound(Fy_Cs)
IfFy_Cs(Fy_x)""Then
IfInstr(LCase(Request(Fy_Cs(Fy_x))),"and")0then
Response.Write"呈现毛病!"
Response.End
EndIf
EndIf
Next
它的思绪就是先取得提交的数据,以“&”为分界取得并处置name/value组,然后判别value里是不是含有界说的关头字(这里为求烦琐,我只留下了“and”),有之,则为打针。
乍一看往,value被反省了,仿佛没有成绩。呵呵,是的,value不会有成绩,但是,name呢?
它的name/value组值来自于Request.ServerVariables("QUERY_STRING"),呵呵,欠好意义,这里出成绩了。Request.ServerVariables("QUERY_STRING")是失掉客户端提交的字符串,这里其实不会主动转换url编码,哈哈,假如我们把name举行url编码再提交的话,呵呵,那就能够绕过反省了。好比参数是ph4nt0m=lake2andlis0,此时程序可以检测到;假如提交%50h4nt0m=lake2andlis0(对p举行url编码),程序就会往判别%50h4nt0m的值,而%50h4nt0m会被转换为ph4nt0m,以是%50h4nt0m值为空,因而就绕过了检测。
等等,为何既然name不解码能够绕过反省而value就不克不及绕过呢?由于value的值取自Request(Fy_Cs(Fy_x)),这个服务器就会解码的。
程序怎样改善呢?只需可以失掉客户端提交的数据是解码后的就能够了,把失掉name的语句改成ForEachSubmitNameInRequest.QueryString就能够了。</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 |
|