Access数据库改为asp后缀名的注意事项
2007年11月05日 星期一 上午 03:47
很多编程人员在开发的时候都认为,改了mdb后缀为asp后就能防止数据库被下载,这种想法是错误的!下面的实验就是证明!
我在自己的电脑上做的测试,事先已经建立了虚拟目录xinwen,数据库文件nxnew.mdb放在了网站的data文件夹下面。
首先,将nxnews.mdb改为nxnews.asp,然后在IE地址栏输入“http://%20127.0.0.1/xinwen/data/nxnews.asp”,返回的页面是一堆乱码和数据库中的图片。
其次,右键单击该乱码页面,选择查看源文件,将弹出的记事本中的内容保存,更名为**.mdb,然后打开该文件,提示我输入密码,看来是头文件遭到了破坏。
最后,打开迅雷,然后通过迅雷下载当前页面,下载后的文件更名为**. md b,再一次进行打开操作,成功打开!数据库就这样被成功下载了!
总结:我们发现,仅仅是简单的通过更改后缀名来防止数据库被下载是有很大缺陷的。事实上即使你将扩展名改为.asp,数据库仍然可以被下载,因为这个文件里不含<%或%>等标签,所以IIS不对这个文件作任何处理,下载的数据库和原数据库完全一样!
解决方案:思路很简单,在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。
下面是我从网上找到的防治Access数据库被下载的常用安全措施:
1.发挥你的想象力 修改数据库文件名
不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒不了人。故保密性为最低。
2.数据库名后缀改为ASA、ASP等
此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况
(1)二进制字段添加(具体的还不清除 )。
(2)在这个文件中加入<%或%>,II
相关文档:
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from 0791idc_News where BigClassName='家装课堂' order by ID desc"
rs.Open sql,Conn,1,1
if rs.eof and rs.bof then
response.Write("暂时没有记录")
else
%>
......
原文链接:http://www.iwapr.cn/article/daima/30.html
ASP/Visual Basic代码
<%
dim picurl,all_picurl
'皆是全局变量:分别定义图片的链接地址;所有指定文件夹(包括指定文件夹的子文件夹下图片url地址)
picurl="" &n ......
Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本流,从而实现对流的读、写和管理等操作.
有下列方法:
Cancel 方法
使用方法如下
Object.Cancel
说明:取消执行挂起的异步 Execute 或 Open 方法的调用。
Close 方法
......
代码:
<%@ LANGUAGE=VBScript CodePage=65001%>
<%
private function decodeBase64(base64)
dim DM, EL
Set DM = CreateObject("Microsoft.XMLDOM")
Set EL = DM.createElement("tmp")
EL.DataType = "bin.base64"
& ......
'SQL防注入函数,调用方法,在需要防注入的地方替换以前的request("XXXX")为SafeRequest("XXXX")
'www.yongfa365.com
Function
SafeRequest(ParaValue)
ParaValue =
Trim
(
Request
(Pa ......