手机
当前位置:查字典教程网 >编程开发 >ASP教程 >两个小函数让你的ASP程序对SQL注入免疫!
两个小函数让你的ASP程序对SQL注入免疫!
摘要:Rem##长整数转换FunctiontoNum(s,default)IfIsNumeric(s)ands""thentoNum=CLng(s...

Rem##长整数转换

FunctiontoNum(s,default)

IfIsNumeric(s)ands<>""then

toNum=CLng(s)

Else

toNum=default

EndIf

EndFunction

Rem##SQL语句转换

FunctiontoSql(str)

IfIsNull(str)Thenstr=""

toSql=replace(str,"''","''''")

EndFunction

示例:

Dimsql

DimstrWhere,strName,intAge

strName=toSql(request("user"))

intAge=toNum(request("age"),20)

sql="SELECT*FROM[USER]"&_

"WHERE[AGE]>"&strName&_

"AND[USERNAME]=''"&intAge&"''"

一般情况下,通过上面两个函数的过虑,可以杜绝网上的SQL注入攻击!如果你觉得有需要,可以加上对chr(0)的替换,将toSql函数改为如下:

FunctiontoSql(str)

IfIsNull(str)Thenstr=""

str=replace(str,chr(0),"")

toSql=replace(str,"''","''''")

EndFunction

另注:

***********************************************************************

检测外部提交的函数

FunctionCheckUrlRefer()

DimstrLocalUrl,intUrlLen,strUrlRefer

strLocalUrl="http://127.0.0.1"

intUrlLen=Len(strLocalUrl)

strUrlRefer=LCase(request.ServerVariables("HTTP_REFERER")&"")

''检测前一个页面是否来自strLocalUrl

IfLeft(strUrlRefer,intUrlLen)=strLocalUrlThen

CheckUrlRefer=True

Else

CheckUrlRefer=False

EndIf

EndFunction

***********************************************************************

该函数可以帮助你抵挡外部的SQL注入测试,只需要在页面的头部调用即可.

通过简单的两个小函数,让你的ASP程序更安全!

欢迎高手指正(请将绕过这两个函数的方法写出来)!

相关讨论页面:

http://community.csdn.net/Expert/TopicView.asp?id=3585010

http://community.csdn.net/Expert/TopicView.asp?id=3582230

http://community.csdn.net/Expert/topic/3589/3589480.xml?temp=.4866449

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

dimqs,errc,iii

qs=request.servervariables("query_string")

dimnothis(18)

nothis(0)="netuser"

nothis(1)="xp_cmdshell"

nothis(2)="/add"

nothis(3)="exec%20master.dbo.xp_cmdshell"

nothis(4)="netlocalgroupadministrators"

nothis(5)="select"

nothis(6)="count"

nothis(7)="asc"

nothis(8)="char"

nothis(9)="mid"

nothis(10)="''"

nothis(11)=":"

nothis(12)=""""

nothis(13)="insert"

nothis(14)="delete"

nothis(15)="drop"

nothis(16)="truncate"

nothis(17)="from"

nothis(18)="%"

errc=false

foriii=0toubound(nothis)

ifinstr(qs,nothis(iii))<>0then

errc=true

endif

next

iferrcthen

Response.Write("对不起,非法URL地址请求!")

response.end

endif

***************************************************************

当然这方法做得太“绝”了,但是我也是没有办法啊。这个方法是在网上看到的,运行于一个网站上,现在一切良好。为了安全我只能这样。我想只要有关SQL的敏感单词都进行过滤掉应该没有什么吧,当然像楼主的做到那一步是基本上可以了,可以修补一下用用。记得我最初用的是《SQL注入天书》上面提供的防范方法,后来才改用这个。

将我以前用的代码也帖出来供参考,大家有兴趣可以去百度或GOOGLE中搜索一下《SQL注入天书》了解

使用这个函数,对客户端提交来的数据进行验证。。。

<%

FunctionSafeRequest(ParaName,ParaType)

''---传入参数---

''ParaName:参数名称-字符型

''ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)

DimParaValue

ParaValue=Request(ParaName)

IfParaType=1then

IfnotisNumeric(ParaValue)then

Response.write"参数"&ParaName&"必须为数字型!"

Response.end

Endif

Else

ParaValue=replace(ParaValue,"''","''''")

Endif

SafeRequest=ParaValue

Endfunction%>

【两个小函数让你的ASP程序对SQL注入免疫!】相关文章:

ByVal和ByRef(编写ASP子程序所用到命令)

个性验证码的制作方法

一段几乎可以让你死机的JS代码

ASP小偷(远程数据获取)程序入门教程

一小偷类!!有兴趣的可以看看

经典的分页完整程序+注释

收集整理的ASP的常用内置函数

浅谈自动采集程序及入库

ASP下实现自动采集程序及入库的代码

如何将ASP生成的内容写入响应流中

精品推荐
分类导航