ASP教程之ASP技能:URL编码与SQL注进
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。sql|编码|技能 说到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,"&")
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就能够了。
呵呵,感谢左右耐着性质看完我的文章^_^
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
页:
[1]