asp+access网站安全问题解决方法大全(csdn资料整理)

 最简单的方法莫过于将数据库存放在一个名字符杂的文件中例如:d#a#t#a#/d##a##t#a#.mdb
如果文件夹足够复杂,文件名有一定难度一班人是无法吊和注的;
而后采用conn.abc之类的链接字串方法。
试试!

一是SQL注入
二是文件上传,FSO
只要源代码里把这些弄好,服务器安全搞好,一般是攻击不了的.

 

只要服务器搞安全了,再垃圾的代码他也攻击不了^_^

 

由于你用的是acess数据库这个数据库,这个数据库很容易被恶意下载。针对这个,你可以把数据库的扩展名改掉。必有你的数据库名字是123.mdb,就改成123.asp。接下来把它放入深沉目录里不要放在一个很容易被猜到的地方。例如可以放到JJili/ygkjkuklh/kuh68589j9/123.mdb中。

    另外一个就是防止sql注入,你可以在网上下一些防注入函数,只要在google一搜就行了,当然也可以用上面几个网友提供的函数,但建议上网下一些比较功能比较全面的防注入源代码。

    最后一个就是用验证码,防止一些黑客用注册机,注册或登录大量的账号。或用洪水攻击。验证码的源文件也可以从网上下到。源文件是一个函数,只要输入参数就可以自动生成和检验验证码。

 

用MD5加密 然后把数据库的名称该为hiuh8^*97987075&^%^$%^7t786.asp

 

一个防注入的
Function requestsafe(ParaName)
  Dim ParaValue
  ParaValue=Request(ParaName)
  if IsNumeric(ParaValue)  then
  requestsafe=ParaValue
  else
  ParaValuetemp=lcase(ParaValue)
  tempvalue="select |insert |delete from|'|""|count(|drop table|update |truncate  |asc(|mid(|char(|xp_cmdshell|exec master|net localgroup administrators|net user| or | and |%20from"
  temps=split(tempvalue,"|")
  for mycount=0 to ubound(temps)
  if  Instr(ParaValuetemp,temps(mycount)) > 0 then response.Write " <script language='javascript'>msg='非法请求!';alert(msg);window.location='../web/'; </script>":response.End
  next
  requestsafe=ParaValue
  end if
End function
当request用

1、改名:在数据库里加入防下载的表

用记事本打开,发现,里面有 <%不对称标记,用下载工具下时,会下到空白或着错误提示
2、防注入:找工具,或着自己过滤,主要是' "" ( 等特殊符号,当然如果有条件最好是限制允许字符
论坛上则使用UBB的方式,有时也用server.encode等方式对内容进行编码。
3、广告:有时空间提供商会自动插入广告~~
4、有时也会是论坛上的签名等没限制好,会有一些特殊功能,插入代码等。

 

过滤非法字符~然后ACESS数据库也可以加密~~或者数据库连接页面加密~~还有就是服务器要做好防护~

 

为了数据库的安全,用MD5加密,网上也有MD5算法的代码下载.
还有请把放数据库的文件夹改成不长见的,数据库的名称也改掉,数据库的后缀名也
换掉.改成什么.ASP,.ASA等等形式.

 

在数据库的链接文件里加上这段代码可以防止注入。
VBScript codeDim sql_injdata
SQL_injdata = "&quot;|'|""|{|}|[|]|/|:|;| <|>|?|,|.|`|~|!|@|$|%|^|(|)
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|or"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString <> "" Then
  For Each SQL_Get In Request.QueryString
    For SQL_Data = 0 To Ubound(SQL_inj)

1).防数据库被攻击或者被下载:
  解决方法:  给数据库名加"#"," "之类防下载,或者数据库后缀名.mdb改成.asp或者asa也可以调用
2).防后台路径过于简单:
  解决方法:  将路径名改复杂点,不要象admin/login.asp过于简单,易识破!
3). 防密码:
  解决方法:  使用md5密码加密
4).防SQL注入:
  解决方法:  过滤特殊字符,参见代码如下:通常将以下代码放于连接页面里面(conn.asp)
  Dim sql_injdata
SQL_injdata = "&quot;|'|""|{|}|[|]|/|:|;| <|>|?|,|.|`|~|!|@|$|%|^|(|)
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|or"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString <> "" Then
  For Each SQL_Get In Request.QueryString
    For SQL_Data = 0 To Ubound(SQL_inj)
      if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
          Response.Write(" <Script Language=""JavaScript"">alert('请不要在参数中包含非法字

付!');history.back(-1) </Script>")
    Response.end
  end if
next
Next
End If

 

<%
'************** ASPSecurity SQL 防注入**************
' Copyright 2006
' Create:2006-4-06
' Update:2006-4-14
'***************************************************

If Request.Form <>"" Then StopInjection(Request.Form)

If Request.QueryString <>"" Then StopInjection(Request.QueryString)

If Request.Cookies <>"" Then StopInjection(Request.Cookies)


Function StopInjection(v…

 

采用生成静态技术,、、
后台和数据库只限制在特定的用户和ip才能访问。

“六大数据库攻击”:
1.强力(或非强力)破解弱口令或默认的用户名及口令
2.特权提升
3.利用未用的和不需要的数据库服务和和功能中的漏洞
4.针对未打补丁的数据库漏洞
5.SQL注入
6.窃取备份(未加密)的磁带

这六项没有一项是ASP本身的漏洞
1、管理制度漏洞,通过加强管理解决
2、不认为“特权提升”属于一种方法,这是入侵过程的必经途径。这是“蛋变鸡”的问题,你能防止蛋就可以防止鸡
3、系统服务漏洞,关闭服务、多余端口解决
4、数据库漏洞,打补丁解决
5、代码设计漏洞,改进源码解决
6、管理制度漏洞,加强治安、资产管理制度解决

买个好点的服务器吧,可以禁止很多木马运行的。

在裡面整個LOG文件,记录哪个IP登陆过,封IP就行了

 

过滤非法字符,数据加密、数据库改名。

 

Replace(str,"'","''")有这句就可以了,然后再判断数据库数值字段的值,文本字段输入select之类是注入不了的
Function IsInt(str)
  IsInt=False
  If IsNull(str) or IsEmpty(str) Then Exit Function
  If Not IsNumeric(str) Then Exit Function
  IsInt=True
End Function

Replace(str,"'","''")有这句就可以了,然后再判断数据库数值字段的值,文本字段输入select之类是注入不了的
Function IsInt(str)
  IsInt=False
  If IsNull(str) or IsEmpty(str) Then Exit Function
  If Not IsNumeric(str) Then Exit Function
  IsInt=True
End Function

解决这几个问题:

防止被恶意下载数据库,网上有方法。。

数据库文件后缀改为.asp,一样可以读取数据。

数据库名字及目录伪装,让人不易猜到。

登陆注册等提交页面禁止非法注入,如" '这样的字符。不要用javascirpt来检查禁止。因为使用黑客软件可以轻松通过javascipt。

以上是我的经验。

 

严格过滤数据库关键字,上面的人都说了,还有就是用urlrewrite重写你的网页链接,静态化你的网页。

用MD5加密

最简单的方法是比如 你的数据库是123.mdb你改成#####123.mdb就行了

防止SQL非常注入
asp漏洞排除
access保护

过滤单引号,还有上传组件有漏洞

加入防注入,服务器也需做限制,以下内容放到CONN.asp文件里!
Dim sql_injdata
SQL_injdata = "&quot;|'|""|{|}|[|]|/|:|;| <|>|?|,|.|`|~|!|@|$|%|^|(|)
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|or"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString <> "" Then
  For Each SQL_Get In Request.QueryString
    For SQL_Data = 0 To Ubound(SQL_inj)
      if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
          Response.Write(" <Script Language=""JavaScript"">alert('请不要在参数中包含非法字付!');history.back(-1) </Script>")
    Response.end
  end if
next
Next
End If

 

在数据库内 建一个表 NotDwon 里边一个字段notdown 数据类型OLE 对象
再把数据改为#数据库名.asp 这样是下载不了的  我试过

(1)使用MD5加密
(2)过滤特殊字符防止SQL注入
(3)判断参数类型,防止手动更改参数引致错误提示
(4)所有页面的异常和错误都跳转到友好界面,不要给别人看到错误代码
(5)更改access的后缀名为asp或asa
(6)设置相应文件夹的权限,如存放上传文件的文件夹只有读取权限,无运行脚本权限
(7)使用FSO上传东西时,判断上传文件的类型,只有你需要的类型文件才可以上传,不是简单的判断后缀名而已
(8)默写关键的文件,例如首页,设置成只读模式。

 

数据库文件名称隐藏
*.mdb  --->*.asp

1 防注入,楼上有详细代码
2 防猜解,数据库文件夹及文件命名不要太大众化
3 上传过滤
4 常惫份吧....

无论什么方法注入是非常难以避免的 除了做好防注入还应该换个思路!比如隐蔽后台,加密管理员信息,隐蔽数据库路径,做数据库仿下载(除了换成ASP还要写字段防止下载),当然也有可能是你们内部人员做鬼!上传漏洞就比较危险了,不过楼上的高手都说过了!至于服务器如果楼主用的是合租的或者虚拟机,或者你的服务器上放着多个网站,那么还有可能是别人网站的漏洞攻击者做了渗透

个人觉得前台最好全静态!后台作的严密点!应该不会有很大问题!

是SQL注入攻击.解决方法很简单.
解决方法:
1.先修改数据库文件地址,并且隐蔽点,做安全处理,如修改mdb文件名中带#等字符(##123.mdb),修改文件后缀为asa或asp(##123.asa)'
2.更改管理后台的登录地址,如初始的登录地址为/admin/login.asp页面的话.修改一下admin文件夹名称为admin123456之类的.反正一定要修改后台管理地址!
3.在每个页面的id之类的数值型传输get参数中(p=request.QueryString("p")之类的页面参数中.)一定要判断传输的是否是数字,用
<%
if IsNumeric(value)=ture then
'如果符合条件
代码1
else
代码2
end if
%>
4.在每个GET截取参数代码中加入防注入代码
<%
Function SQLFixup(TextIn)
SQLFixup = Replace(TextIn, "'", "''", 1)
SQLFixup = Replace(TextIn, "'", "''", 1)
SQLFixup = Replace(TextIn,Chr(0),"", 1, -1, 1)
SQLFixup = Replace(TextIn, """", """", 1, -1, 1)
SQLFixup = Replace(TextIn," <"," <", 1, -1, 1)
SQLFixup = Replace(TextIn,">",">", 1, -1, 1)
SQLFixup = Replace(TextIn, "script", "script", 1, -1, 0)
SQLFixup = Replace(TextIn, "SCRIPT", "SCRIPT", 1, -1, 0)
SQLFixup = Replace(TextIn, "Script", "Script", 1, -1, 0)
SQLFixup = Replace(TextIn, "script", "Script", 1, -1, 1)
SQLFixup = Replace(TextIn, "object", "object", 1, -1, 0)
SQLFixup = Replace(TextIn, "OBJECT", "OBJECT", 1, -1, 0)
SQLFixup = Replace(TextIn, "Object", "Object", 1, -1, 0)
SQLFixup = Replace(TextIn, "object", "Object", 1, -1, 1)
SQLFixup = Replace(TextIn, "applet", "applet", 1, -1, 0)
SQLFixup = Replace(TextIn, "APPLET", "APPLET", 1, -1, 0)
SQLFixup = Replace(TextIn, "Applet", "Applet", 1, -1, 0)
SQLFixup = Replace(TextIn, "applet", "Applet", 1, -1, 1)
SQLFixup = Replace(TextIn, "[", "[")
SQLFixup = Replace(TextIn, "]", "]")
SQLFixup = Replace(TextIn, """", "", 1, -1, 1)
SQLFixup = Replace(TextIn, "=", "=", 1, -1, 1)
SQLFixup = Replace(TextIn, "'", "''", 1, -1, 1)
SQLFixup = Replace(TextIn, "select", "select", 1, -1, 1)
SQLFixup = Replace(TextIn, "execute", "execute", 1, -1, 1)
SQLFixup = Replace(TextIn, "exec", "exec", 1, -1, 1)
SQLFixup = Replace(TextIn, "join", "join", 1, -1, 1)
SQLFixup = Replace(TextIn, "union", "union", 1, -1, 1)
SQLFixup = Replace(TextIn, "where", "where", 1, -1, 1)
SQLFixup = Replace(TextIn, "insert", "insert", 1, -1, 1)
SQLFixup = Replace(TextIn, "delete", "delete", 1, -1, 1)
SQLFixup = Replace(TextIn, "update", "update", 1, -1, 1)
SQLFixup = Replace(TextIn, "like", "like", 1, -1, 1)
SQLFixup = Replace(TextIn, "drop", "drop", 1, -1, 1)
SQLFixup = Replace(TextIn, "create", "create", 1, -1, 1)
SQLFixup = Replace(TextIn, "rename", "rename", 1, -1, 1)
SQLFixup = Replace(TextIn, "count", "count", 1, -1, 1)
SQLFixup = Replace(TextIn, "chr", "chr", 1, -1, 1)
SQLFixup = Replace(TextIn, "mid", "mid", 1, -1, 1)
SQLFixup = Replace(TextIn, "truncate", "truncate", 1, -1, 1)
SQLFixup = Replace(TextIn, "nchar", "nchar", 1, -1, 1)
SQLFixup = Replace(TextIn, "char", "char", 1, -1, 1)
SQLFixup = Replace(TextIn, "alter", "alter", 1, -1, 1)
SQLFixup = Replace(TextIn, "cast", "cast", 1, -1, 1)
SQLFixup = Replace(TextIn, "exists", "exists", 1, -1, 1)
SQLFixup = Replace(TextIn,Chr(13)," <br>", 1, -1, 1)
End Function
%>
调用函数,SQLFixup().

将数据库移到IIS无权访问的路径,严格设置访问权限

过滤传递的参数,把数据库路径名称弄复杂点。
数据库文件不要存成.MDB格式,改成.ASP,或者.ASA的防止能够下载下来的。
检查一下是否用过上传组件,或者内容编辑器。看一下上传文件是否经过验证。
很多都是通过网上共享的内容编辑器之中的上传文件进行入侵的。
因为这些文件都是直接访问的,并没有经过任何安全处理。
排除服务器安全性,就应该不会有什么问题了。

Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
''自定义需要过滤的字串,用 "防" 分隔
'Fy_In = "''防;防cmd防and防exec防insert防select防delete防update防count防*防%防chr防mid防master防truncate防char防declare防 <防>防=防|防-防_"
Fy_In = """防'防;防cmd防and防exec防insert防select防delete防update防count防*防%防chr防mid防master防truncate防char防declare防 <防>防=防|防_防 <iframe>防 </iframe>"
Fy_Inf = split(Fy_In,"防")
'For Fy_Xh=0 To Ubound(Fy_Inf)
' response.write Fy_Inf(Fy_Xh) & " <br>"
'next
If Request.Form <>"" Then
For Each Fy_Post In Request.Form

For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh)) <>0 Then
Response.Write "对不起!!您试图输入恶意代码!!我们将对您的ip进行相应的处理!"
Response.Write "本站已经给您做了如下记录↓ <br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&" <br>"
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")=null  or Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
Response.Write "内网IP:"&Request.ServerVariables("REMOTE_ADDR")&" <br>"
else
Response.Write "内网 IP:" &Request.ServerVariables("HTTP_X_FORWARDED_FOR") &" <br>"
end if

Response.Write "操作时间:"&Now&" <br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&" <br>"
Response.Write "提交方式:POST <br>"
Response.Write "提交参数:"&Fy_Post&" <br>"
Response.Write "提交数据:"&Request.Form(Fy_Post)
txtRecord  Request.ServerVariables("REMOTE_ADDR"),Request.ServerVariables("HTTP_X_FORWARDED_FOR"),now,Request.ServerVariables("URL"),"POST",Fy_Post,Request.QueryString(Fy_Post)
Response.End
End If
Next
Next
End If
If Request.QueryString <>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh)) <>0 Then
Response.Write "对不起!!您试图输入恶意代码!!我们将对您的ip进行相应的处理! <br>"
Response.Write "非法操作!本站已经给您做了如下记录↓ <br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&" <br>"
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")=null  or Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
Response.Write "内网IP:"&Request.ServerVariables("REMOTE_ADDR")&" <br>"
else
Response.Write "内网 IP:" &Request.ServerVariables("HTTP_X_FORWARDED_FOR") &" <br>"
end if
Response.Write "操作时间:"&Now&" <br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&" <br>"
Response.Write "提交方式:GET <br>"
Response.Write "提交参数:"&Fy_Get&" <br>"
Response.Write "提交数据:"&Request.QueryString(Fy_Get)
txtRecord  Request.ServerVariables("REMOTE_ADDR"),Request.ServerVariables("HTTP_X_FORWARDED_FOR"),now,Request.ServerVariables("URL"),"GET",Fy_Get,Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If
function txtRecord(daliIP,neibuIP,lczNow,lczPage,lczPostOrGet,lczCanshu,lczData)
if neibuIP="" or neibuIP=null then
neibuIP=daliIP
end if
dim fso,stream
path=server.MapPath("txtrecord.asp")
set fso=server.CreateObject("Scripting.filesystemobject")
if  not fso.fileexists(path)  then
set stream=fso.createtextfile(path,true)
stream.writeline("操作IP            操作IP1            操作时间            操作页面            提交方式            提交参数            提交数据")
set stream=nothing
end if
Set filelcz = fso.GetFile(path)
Set ts = filelcz.OpenAsTextStream(8, -2)
ts.writeline  daliIP&"          "&neibuIP&"          "&lczNow&"          "&lczPage&"          "&lczPostOrGet&"          "&lczCanshu&"          "&lczData
ts.close
set ts=nothing
set filelcz=nothing
set fos=nothing
end function

记住文本框一定要饭注入,地址栏参数防注入,服务器的权限设置高点,千万不能有写入和反问父级权限
还有就是Access数据库是可以被下载的  请吧Access后缀名mdb改成ASp  可以使用的 但是连接的时候也要改成ASP  这样起码黑客不能下载你的数据库!!!

 

利用ISAPI写个筛选器, 检查请求中的数据, 通过正则表达式来查找攻击关键字, 正则表达式的写法可以参照ModSecurity的处理。 发现攻击你可以重定向个新的页面。

加入代码如:防SQL注入
修改的运行方如:运行的条件,同时执行几个等
不要轻易相信ASP是不安全的,现在仍然有很多大网站都是ASP的。关键是程序员的水平。

只需要防止SQL注入就可以了。
简单的说,凡是出现如下语句的地方:
strSQL= "SELECT ... FROM ... WHERE USERNAME='" & request.form("UserName") & "'"
凡是把浏览者输入的内容插入到sql语句中并执行的地方,就一定要对输入的内容进行过滤处理,把敏感字符过滤掉。敏感字符包括单引号,双引号,如果可以的话还要把空格去掉。
比如我的登录判断:

dim user
user=replace(trim(request.Form("username")),"'","")
user=replace(user,chr(34),"")
user=replace(user,chr(37),"")
user=replace(user,chr(42),"")
sql="select * from users where username='"&user&"'"
rs.open sql,conn,1,1
'以下省略

这样处理后,基本不会有什么问题了。

除了Sql注入外,还有个问题Access这个数据库如果设置不合理的话,可以被下载到用户本地进行分析!

数据库插入时,请用command
bs
rs.new的写法

可以下载SQLIN的防范工具,然后自己拿 啊D注入工具测试下。

最简的方法.把数据库的后缀改为 .ASP
然后在数据库的连接配置中把 .MDB也改了ASP
这样一样也可读取数据库的

但别人攻击数据库时不能直接得到数据库

如果对技术不是很熟的话,来一招绝的!直接把数据库设置为只读,要修改的时候,用本机修改好数据库以后再把修改好的数据库上传并设置为只读!
不过如果网页本身要写数据库的话就只能用关键字过滤等办法了。

首先你要搞清楚攻击的来源和对象
其次你再确认是不是你的sql没有防注入
最后如果access实在不行的话就考虑换sql server

 

一般防止注入代码,我习惯是放在数据库连接文件里,然后每个需要用到的地方include进去。

 

<%
'************** ASPSecurity SQL 防注入**************
' Copyright 2006
' Create:2006-4-06
' Update:2006-4-14
'***************************************************

If Request.Form <>"" Then StopInjection(Request.Form)

If Request.QueryString <>"" Then StopInjection(Request.QueryString)

If Request.Cookies <>"" Then StopInjection(Request.Cookies)


Function StopInjection(values)
For Each N_Get In values
Dim L_Get, L_Get2
For Each L_Get In values
L_Get2 = values(L_Get)
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "(/bselect/b|/sand/s|'|;|/sdeclare/s)"
If regEx.Test(L_Get2) Then
Alert()
response.End()
End If
Set regEx = Nothing
Next
Next
End Function


Sub Alert()
Dim str
str = " <"&"Script Language=JavaScript"&">"
str = str & "alert('== 雷客图ASP站长安全助手检测到了危险字符,已经禁止本次提交 ==/n');window.close();"
str = str & " <"&"/Script"&">"
response.write  str
End Sub
%>

在数据库的链接文件里加上这段代码可以防止注入。

VBScript code
   
   
Dim sql_injdata SQL_injdata = " &quot;|'|""|{|}|[|]|/|:|;|<|>|?|,|.|`|~|!|@|$|%|^|(|) | and |exec|insert| select |delete|update|count| * |%| chr | mid |master|truncate|char|declare| or " SQL_inj = split (SQL_Injdata, " | " ) If Request.QueryString <> "" Then For Each SQL_Get In Request.QueryString For SQL_Data = 0 To Ubound (SQL_inj) if instr (Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA)) > 0 Then Response.Write( " <Script Language=""JavaScript"">alert('请不要在参数中包含非法字付!');history.back(-1)</Script> " ) Response.end end if next Next End If 对提交的数据做全局过滤。 封杀注入点
如果要更安全一些,还要对access数据库文件进行防下载处理。
经过我的试验,不管是把文件名改为.asp,还是在文件名中插入空格、百分号之类的字符,都是没用的。真正有用的方法是——
在数据库中建立一个表,只需要一个字段,类型是OLE对象。 
然后在电脑上新建一个txt,内容是 <%response.end%>,或者你要redirect或者干脆让它出错什么的都可以。然后再数据库中的那个表,导入该txt。然后把数据库后缀名改为asp
这样,当别人试图下载的时候, <%%>里面的内容将被运行,从而防止下载。你也完全可以redirect到某个avi文件上,让他辛辛苦苦下了半天,发现下载的是养猪的讲座,岂不是很好玩。
 asp版的防范SQL注入式攻击代码~: 

<%
On Error Resume Next
Dim strTemp

If LCase(Request.ServerVariables("HTTPS")) = "off" Then
strTemp = "http://"
Else
strTemp = "https://"
End If

strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")

strTemp = strTemp & Request.ServerVariables("URL")

If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)

strTemp = LCase(strTemp)

If Instr(strTemp,"select%20") or Instr(strTemp,"insert%20") or Instr(strTemp,"delete%20from") or Instr(strTemp,"count(") or Instr(strTemp,"drop%20table") or Instr(strTemp,"update%20") or Instr(strTemp,"truncate%20") or Instr(strTemp,"asc(") or Instr(strTemp,"mid(") or Instr(strTemp,"char(") or Instr(strTemp,"xp_cmdshell") or Instr(strTemp,"exec%20master") or Instr(strTemp,"net%20localgroup%20administrators") or Instr(strTemp,":") or Instr(strTemp,"net%20user") or Instr(strTemp,"'") or Instr(strTemp,"%20or%20") then
Response.Write "<script language='javascript'>"
Response.Write "alert('非法地址!!');"
Response.Write "location.href='error.asp';"
Response.Write "<script>"
End If
%>
 只需要防止SQL注入就可以了。 
简单的说,凡是出现如下语句的地方:
strSQL= "SELECT ... FROM ... WHERE USERNAME='" & request.form("UserName") & "'"
凡是把浏览者输入的内容插入到sql语句中并执行的地方,就一定要对输入的内容进行过滤处理,把敏感字符过滤掉。敏感字符包括单引号,双引号,如果可以的话还要把空格去掉。
比如我的登录判断:

dim user
user=replace(trim(request.Form("username")),"'","")
user=replace(user,chr(34),"")
user=replace(user,chr(37),"")
user=replace(user,chr(42),"")
sql="select * from users where username='"&user&"'"
rs.open sql,conn,1,1
'以下省略

这样处理后,基本不会有什么问题了。
 你用MD5加密一下密码,然后把数据库的路径改得复杂一点。 
一般不要把数据库的文件夹命名为DateBase之类的。
换成其他名字,数据库的名字也换掉。
防止sql注入基本上就可以了。还有增强密码安全性和服务器的安全性。过滤非法字符!!!使用replace函数替换非法字符 
防止SQL非常注入
ASP 虽说漏洞较多
但已经是发展的比较成熟的一门语言了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值