网上找的所谓过滤

网上找的所谓过滤<%@ LANGUAGE = VBScript CodePage = 936%>
网上找的所谓过滤
<%
网上找的所谓过滤
Option Explicit
网上找的所谓过滤Response.Buffer 
= true
网上找的所谓过滤
dim GQ,Checki,errc
网上找的所谓过滤GQ
=request.servervariables("HTTP_USER_AGENT")
网上找的所谓过滤
网上找的所谓过滤errc
=false
网上找的所谓过滤
dim nothis(19
网上找的所谓过滤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)="%" 
网上找的所谓过滤nothis(
19)="declare"
网上找的所谓过滤
for checki= 0 to ubound(nothis)
网上找的所谓过滤  
'--------------Get Filter
网上找的所谓过滤
  if instr(lcase(GQ),nothis(checki))<>0 then
网上找的所谓过滤   errc
=true
网上找的所谓过滤   
exit for
网上找的所谓过滤  
end if
网上找的所谓过滤
网上找的所谓过滤
next
网上找的所谓过滤
if errc then
网上找的所谓过滤response.
end
网上找的所谓过滤
end if
网上找的所谓过滤
Dim Startime
网上找的所谓过滤
Dim Dvbbs,template
网上找的所谓过滤
Dim SqlNowString,Conn
网上找的所谓过滤
'定义数据库类别,1为SQL数据库,0为Access数据库
网上找的所谓过滤
Const IsSqlDataBase = 1
网上找的所谓过滤
'论坛缓存名称,如果一个站点有多个论坛请更改成不同名称
网上找的所谓过滤
Const Forum_CacheName = "aspsky"
网上找的所谓过滤
'定义运行模式,测试的时候设置1,正常运行的时候设置为0,不输出错误信息有利于安全,
网上找的所谓过滤
Const IsDeBug = 1
网上找的所谓过滤Startime 
= Timer()
网上找的所谓过滤
Dim MyBoardOnline
网上找的所谓过滤
Dim Db
网上找的所谓过滤
Set Dvbbs = New Cls_Forum
网上找的所谓过滤
Set MyBoardOnline=new Cls_UserOnlne 
网上找的所谓过滤
Set template = New cls_templates
网上找的所谓过滤
If IsSqlDataBase = 1 Then
网上找的所谓过滤    SqlNowString 
= "GetDate()"
网上找的所谓过滤
Else
网上找的所谓过滤    SqlNowString 
= "Now()"
网上找的所谓过滤
End If
网上找的所谓过滤
Sub ConnectionDatabase
网上找的所谓过滤    
Dim ConnStr
网上找的所谓过滤    
If IsSqlDataBase = 1 Then
网上找的所谓过滤        
'sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP)
网上找的所谓过滤
        Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
网上找的所谓过滤        SqlDatabaseName 
= "dvbbs7"
网上找的所谓过滤
        SqlPassword = ""
网上找的所谓过滤
        SqlUsername = "dvbbs"
网上找的所谓过滤
        SqlLocalName = "(local)"
网上找的所谓过滤
        ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
网上找的所谓过滤
    Else
网上找的所谓过滤        
'免费用户第一次使用请修改本处数据库地址并相应修改data目录中数据库名称,如将dvbbs6.mdb修改为dvbbs6.asp
网上找的所谓过滤
        Db = "data/dvbbs7.mdb"
网上找的所谓过滤
        ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
网上找的所谓过滤    
End If
网上找的所谓过滤    
On Error Resume Next
网上找的所谓过滤    
Set conn = Server.CreateObject("ADODB.Connection")
网上找的所谓过滤    conn.open ConnStr
网上找的所谓过滤    
If Err Then
网上找的所谓过滤        err.Clear
网上找的所谓过滤        
Set Conn = Nothing
网上找的所谓过滤        Response.Write 
"数据库连接出错,请检查连接字串。"'注释,需要把这几个字翻译成英文。
网上找的所谓过滤
        Response.End
网上找的所谓过滤    
End If
网上找的所谓过滤
End Sub
网上找的所谓过滤%
>
网上找的所谓过滤
原文件是动网SQL版本的conn.asp文件,是用来与sql连接的文件,朋友让我看看,是否做了过滤,一开始没懂,仔细一看,他所做的过滤是对"HTTP_USER_AGENT"接受到的字符进行检测,检测到则报错。
作用不言而喻,在程序出现了sql漏洞的时候,还能做到不让对方进行xp_cmdshell的操作,不过作用真的不是很大,只要在sql服务器上稍微做一下权限控制,或者删除xp_cmdshell的存储过程就可以了,实在有够多余,不过还是可以借鉴一下的。
上一篇:k8s 原生Serverless 实践:ASK 与 Knative


下一篇:转载:ASP.Net性能优化(作者:刘鉴平)