asp+Access的网页老是被攻击怎么办呀
我们学校的网页是采用ASP+Access做的,调用数据库时没有加密,
现在老是被别人攻击,常常放入广告等,
我分析了一下,好像是别人直接攻击数据库的,
那位高手能帮帮我??
如果我想在Access里加密,用Asp怎么调用,请给一段代码!!谢谢了!!
------解决方案--------------------那就去学习JSP吧!运行慢了点,但是安全,不容易被攻击
------解决方案--------------------过滤非法字符!!!使用replace函数替换非法字符
------解决方案--------------------过滤非法字符!!!使用replace函数替换非法字符
防止SQL非常注入
ASP 虽说漏洞较多
但已经是发展的比较成熟的一门语言了
------解决方案--------------------防止sql注入基本上就可以了。还有增强密码安全性和服务器的安全性。
------解决方案--------------------你用MD5加密一下密码,然后把数据库的路径改得复杂一点。
一般不要把数据库的文件夹命名为DateBase之类的。
换成其他名字,数据库的名字也换掉。
------解决方案--------------------我在Access里加密码了,只有通过密码才能连接,就连提交表单那里也设置了验证。
但现在还是被攻击,只是少些了,我不知道要怎么做了。
高手!!快快出来呀
------解决方案--------------------只需要防止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
'以下省略
这样处理后,基本不会有什么问题了。
------解决方案--------------------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
%>
------解决方案--------------------如果要更安全一些,还要对access数据库文件进行防下载处理。
经过我的试验,不管是把文件名改为.asp,还是在文件名中插入空格、百分号之类的字符,都是没用的。真正有用的方法是——
在数据库中建立一个表,只需要一个字段,类型是OLE对象。
然后在电脑上新建一个txt,内容是<%response.end%>,或者你要redirect或者干脆让它出错什么的都可以。然后再数据库中的那个表,导入该txt。然后把数据库后缀名改为asp
这样,当别人试图下载的时候,<%%>里面的内容将被运行,从而防止下载。你也完全可以redirect到某个avi文件上,让他辛辛苦苦下了半天,发现下载的是养猪的讲座,岂不是很好玩。