源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-08-14 16:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:两个小函数让你的ASP程序对SQL注入免疫!
Rem ## 长整数转换  Function toNum(s, default)  If IsNumeric(s) and s <> "" then  toNum = CLng(s)  Else  toNum = default  End If  End Function  Rem ## SQL 语句转换  Function toSql(str)  If IsNull(str) Then str = ""  toSql = replace(str, "''", "''''")  End Function  示例:  Dim sql  Dim strWhere, 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函数改为如下:  Function toSql(str)  If IsNull(str) Then str = ""  str = replace(str, chr(0), "")  toSql = replace(str, "''", "''''")  End Function  另注:  ***********************************************************************  检测外部提交的函数  Function CheckUrlRefer()  Dim strLocalUrl, intUrlLen, strUrlRefer  strLocalUrl = "http://127.0.0.1"  intUrlLen = Len(strLocalUrl)  strUrlRefer = LCase(request.ServerVariables("HTTP_REFERER") & "")  ''检测前一个页面是否来自 strLocalUrl  If Left(strUrlRefer, intUrlLen) = strLocalUrl Then  CheckUrlRefer = True  Else  CheckUrlRefer = False  End If  End Function  ***********************************************************************  该函数可以帮助你抵挡外部的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  /////////////////////////////////////////////////////////////////////////////////////////////////////////////  dim qs,errc,iii  qs=request.servervariables("query_string")  dim nothis(18)  nothis(0)="net user"  nothis(1)="xp_cmdshell"  nothis(2)="/add"  nothis(3)="exec%20master.dbo.xp_cmdshell"  nothis(4)="net localgroup administrators"  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  for iii= 0 to ubound(nothis)  if instr(qs,nothis(iii))<>0 then  errc=true  end if  next  if errc then  Response.Write("对不起,非法URL地址请求!")  response.end  end if  ***************************************************************  当然这方法做得太“绝”了,但是我也是没有办法啊。这个方法是在网上看到的,运行于一个网站上,现在一切良好。为了安全我只能这样。我想只要有关SQL的敏感单词都进行过滤掉应该没有什么吧,当然像楼主的做到那一步是基本上可以了,可以修补一下用用。记得我最初用的是《SQL注入天书》上面提供的防范方法,后来才改用这个。  将我以前用的代码也帖出来供参考,大家有兴趣可以去百度或GOOGLE中搜索一下《SQL注入天书》了解  使用这个函数,对客户端提交来的数据进行验证。。。  <%  Function SafeRequest(ParaName,ParaType)  ''--- 传入参数 ---  ''ParaName:参数名称-字符型  ''ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)  Dim ParaValue  ParaValue=Request(ParaName)  If ParaType=1 then  If not isNumeric(ParaValue) then  Response.write "参数" & ParaName & "必须为数字型!"  Response.end  End if  Else  ParaValue=replace(ParaValue,"''","''''")  End if  SafeRequest=ParaValue  End function%>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部