ASP+Access网站安全解决方案汇总Word格式.doc
- 文档编号:13923424
- 上传时间:2022-10-15
- 格式:DOC
- 页数:5
- 大小:83.50KB
ASP+Access网站安全解决方案汇总Word格式.doc
《ASP+Access网站安全解决方案汇总Word格式.doc》由会员分享,可在线阅读,更多相关《ASP+Access网站安全解决方案汇总Word格式.doc(5页珍藏版)》请在冰豆网上搜索。
对于这种攻击方法,最好的防范措施就是把服务器端的验证改为Session。
3)%5C暴库
解决方案一:
并不是所有的网站都存在%5C暴库的问题,对于这个问题,我们可以加入ONERRORRESUMENEXT语句,让程序出错时仍继续向下执行,这样,数据库会相对安全。
比如原来的conn.asp的文件内容如下:
Response.buffer=true
Constconndata=mydata/^%$!
%25#%23&
%78@data(+.asp
'
设置数据库路径
Constbackdata="
mydata/#数据库备份#kycpanswpuzg1ok.asp"
设置数据库备份路径
mydata="
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource="
&
Server.MapPath(conndata)
Setconn=Server.CreateObject("
ADODB.Connection"
)
conn.Openmydata
为了防止暴库,我们改为如下的形式:
OnErrorResumeNext
经过这样的设置后,就可以有效防止这种方法的攻击。
我们再假设对方通过另外的途径获得了我们的数据库,想下载它,那我们怎么防止对方下载呢?
有些朋友可能会认为,把数据库改成一个复杂的名字,如^%$!
%78@data(+.asp就可以防下载了。
其实,这样跟本就做不到防下载的目的,假如你的网站网址:
如果再作点调整,将数据库加入防下载表,那么迅雷此时就无能为力了。
我们首先建立一个表NotDown,设制类型为“备注”,然后在其中加入<
%loop%>
后,再将其类型设制为“OLE对象”,如图1和图2所示。
此时若在浏览器中下载数据库,将会出现如下所示的错误:
MicrosoftVBScript编译器错误错误'
800a03f6'
缺少'
End'
/iisHelp/common/500-100.asp,行242
800a040e'
loop'
语句缺少'
do'
/data/^%$!
%78@data(+.asp,行227
Loop
同样,在迅雷和其它软件中也无法下载,这就是解决方案一。
解决方案二:
将数据库的地址设在非网站目录下,假如你网站的路径为“C:
\Inetpub\wwwroot”,那么我们改数据库放于d:
\data\^%$!
%78@data(+.asp,conn.asp下,修改后的代码如下:
Constconndata="
d:
%78@data(+.asp"
\data\#数据库备份#kycpanswpuzg1ok.asp"
conndata
这样相对于前面的方法而言,更为安全,因为数据库已不能通过HTTP下载了。
4)SQL注入
现在SQL注入很厉害,一个大型网站,由于文件众多,出现SQL注入漏洞也是情有可原的。
现在多数人想到的办法是过滤掉危险的字符,如“‘”、“()”、“<
>
”以及Select、Update等字符,但是由于代码太多,很有可能忽略掉其中某些未经处理的外部数据。
对此,我们可以换个角度来考虑。
我们可以想想,不管是SQL注入还是%5C暴库,其目的都是为了获取网站后台用户名和管理员密码。
假如我们的密码是MD5加密的,那么对方将尝试进行暴力破解。
如果把MD5加密算法作点修改,加密后,其密码散列将发生变化,使暴力破解失效。
如果再用我们修改后的MD5加密算法对密匙进行二次MD5加密,安全性必将大大提高。
下面我们就一起来修改MD5加密算法,其方法很简单。
一份原MD5加密49至53行(16位加密)的代码如下:
RShift=(lValueAnd&
H7FFFFFFE)\m_l2Power(iShiftBits)
If(lValueAnd&
H80000000)Then
RShift=(RShiftOr(&
H40000000\m_l2Power(iShiftBits-1)))
EndIf
注意RShift=(lValueAnd&
H7FFFFFFE)这部分,我们只要将H7FFFFFFE稍微作点修改,暴力破解就失效了,比如我们修改为H7FB9DFAE。
在作修改前,我们用原MD5算法加密“a”得到散列“c0f1b6a831c399e2”,网站上可以轻松破解,如图3所示。
修改后,我们再次对“a”加密,得到散列“8016a044f35128b8”,现在我们再次
由此我们可以看出,暴力破解“a”已经失效。
这样操作后,一个字母a都破解不出来了,要是我们对a进行二次、三次MD5加密,想想结果会是什么?
破解的人别想得到结果!
不过前提是对方不知道你修改的MD5算法,否则根据你修改的算法再编写工具,暴力破解是完全可行的。
所以,你要保证你的MD5.asp安全,千万不要在程序上出现一个像新云网站管理系统downfile.asp中的下载任意文件的漏洞,不然,就别想着安全了。
对于上面的方法,在不过滤任何字符的情况下也可以算是安全的,让旁注者去破解吧。
如果真要做得完全不过滤,还要注意一个地方,就是登录页login.asp。
我们可以把用户名和密码都改为MD5的加密密码,然后把加密后的MD5和数据库中的MD5作比较。
这样,绝对不可能直接利用’or’=’or’进行后台猜解的。
比如我们原来的登录验证代码如下:
sql=”selectuser,pwdfromadminwhereuname=’”&
request(“user”)&
”’andpwd=’”&
request(“pwd”)&
”’”
conn.execute(sql)
ifnotrs.eofandnotrs.bofthen
response.redirect“manage.asp”
else
response.write“登陆失败”
endif
很明显,上面的代码存在注入。
在不过滤的情况下,我们可以做如下的修改。
md5(request(“user”))&
md5(request(“pwd”))&
注意,原数据库中的用户名和密码都是经过MD5加密了的。
现在就不存在注入了,因为’or’=’or’会被我们修改了的MD5加密,加密后已变成“4556995b8f421800”。
经过上面几种方法的防范之后,现在还有惟一的一个问题,就是防溯雪之类软件的暴力破解。
虽然说一个字母a经过我们修改的MD5加密,让针对MD5密匙破解的程序已失效,但是如果你后台用户名和密码就用一个a,用溯雪几秒钟就能破解进入后台。
像溯雪这类POST和GET的攻击,我们可以这样修改代码,让Session来处理(这里不采用Cookie,因为Cookie很容易被伪造)。
dimt1
ifsession("
times"
)>
=3then
response.write("
<
script>
alert('
登录次数超过限制,不允许再尝试暴力破解'
);
this.location.href='
index.asp'
;
/script>
"
Response.End
session("
)=session("
)+1
t1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP Access 网站 安全 解决方案 汇总