|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。sql|程序|函数|函数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
%>
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码 |
|