两个小函数让你的ASP程序对SQL注入免疫!

2018-09-06 11:47

阅读:694

  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=
intUrlLen=Len(strLocalUrl)
strUrlRefer=LCase(request.ServerVariables(HTTP_REFERER)&)
检测前一个页面是否来自strLocalUrl
IfLeft(strUrlRefer,intUrlLen)=strLocalUrlThen
CheckUrlRefer=True
Else
CheckUrlRefer=False
EndIf
EndFunction
***********************************************************************
该函数可以帮助你抵挡外部的SQL注入测试,只需要在页面的头部调用即可.

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

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

相关讨论页面:




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

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%>


评论


亲,登录后才可以留言!