设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 88|回复: 9
打印 上一主题 下一主题

我刚学ASP,做了只有十几个页面的网站!数据库在根目录下,用户只要在首页后 ...

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-7 06:50:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我刚学ASP,做了只有十几个页面的网站!数据库在根目录下,用户只要在首页后面输入数据库的名字,如"http://www.xxxx.com/xxx.mdb"就可下载数据库!而数据库设密码也同虚设!没安全性可言!
怎样存放数据库的路径才能最大可能让用户访问不到!用的是Access数据库!
有些说 最好放在HTTP访问不到的目录下 就可以避免恶意的用户通过Http方式读取到数据库文件!
到底该怎么办?
高手给指点一下!谢谢
注:我的网站空间是申请的免费的支持ASP的空间(常来网)
2#
发表于 2010-1-7 06:50:53 | 只看该作者
哪有永远安全的啊?
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-7 06:50:56 | 只看该作者
付费的安全

可以把access数据库该成asp后缀的数据库。。。这样就down不了了。/
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-7 06:50:59 | 只看该作者
转载:出自本论坛
防止ACCESS数据库下载的终极之法
一、开篇
自从搞ASP+ACCESS没少为避免数据库下载而伤过神,网上的奇淫技巧更是数不胜数,本文就是同大家共同探讨各路前辈的留下的秘笈并指中其中的优劣,最后为大家提供一种最佳的解决方案
二、剖析
为了防止ACESS数据库下载,小的见过不少方法,主要有以下几种:
1、数据库加密--------这个自然不用说了,别人如果知道数据库路径,照样能下载,打开数据库其实也很简单,网上破解ACCESS数据库的密码软件太多了,以前我也有所研究,97版的ACCESS的密码是从文件的开头第73(如果这个数字没记错的话)个字符开始连续的十多个,这个是密码与已知的一串字符异和的结果,2000版的ACCESS变聪明了一些它的加密后的密码不是连续是间隔的不过加密密钥还是一样的,由于是对称加密所以破解ACCESS简直易如反掌(呵呵,好像跑题了)
2、数据库文件名更名--------这个用的比较多,主要是用到了HTML的锚点,将数据库的文件名中加入“#”,如果直接敲入数据库的路径试图下载的话,由于浏览器只解析到了#前面一大串URL,#后被认为是锚点标记,数据路径被保护起来了。刚看到这种方法时,俺确实得佩服最初发现这个方法的N人。可惜没多久,在网上看到了另一篇文章对此方法的破解,原理很简单,字符“#”被URL解析后的字符应该是“%35”,这就是我们在地址栏里经常看到%20样的东西,其实是空格,由于进行了URL编码所以解析成了%20(20是因为空格的ASC码值为20)
3、数据库扩展名更名--------这个用的太普遍了,扩展名一般改成.ASP,因为扩展名为。ASP文件都要交给ASP。DLL文件解释执行,ASP。DLL只会解释在<%%>之间的代码(还有<script runat=server></script>),其它的一概不管,原封不动地交给浏览器处理,所以直接把扩展名改为ASP后,数据不会被下载,但是会被浏览器直接打开.这样别人将内容拷贝后仍然可以还原成原始的MDB文件
三 解决
大家应该比较了解动网论坛,他的数据库里有一个NotDown的表,这个表只有一个字段,并且这个字段的类型是OLE型,用于存放二进制的数据,这个表有什么作用呢?呵呵...
把动网的数据库扩展名改成ASP,然后在浏览器里输入对应路径的数据库地址,看到什么了?一串错误的ASP脚本错误的信息,当然数据库也没办法DOWN下来了,为什么会这样呢,那个NotDown表究竟存放的是什么呢??
大家好好看看第二节中的第3种方法,仔细琢磨一下应该不难明白结论,正是因为NotDown表是有类似这样的脚本致使ASP.DLL把它当作真正的ASP文件来执行,但是这恰恰是动网数据库故意安排的语法错误,致使ASP.DLL解释里出错,因而把ASP出错信息显示出来,从而保护了真正的数据.
四 实践
NotDown表中倒底写了些什么呢??呵呵,是不是有点急了.
我们知道NotDown表由于是二进制字段,所有我们读写数据库的时候,也要改一改常规,ADO中专门有读写二进制字段的方法它们分别是AppendChunk 和GetChunk 有了这两个方法我们就可以看看那个表里面究竟是啥玩意了
<%
------此处省略连接数据200字,得到数据连接对象Conn
set rs=server.createobject("adodb.recordset")
sql="select notdown from NotDown"
rs.open sql,0,1
data=rs(0).GetChunk(rs(0).ActualSize) '读出所有的二进制数据
rs.close
set rs=nothing
----关闭数据库连接
response.BinaryWrite(data)''''由于data是二进制,所以要调用response打印二进制的方法将其输出
%>
过足瘾了吧,想知道结果是什么吗,赶紧回去调试看看啊
五 改进
上面的方法虽然是保住了数据库,但是有个错误的提示,总是觉得有点不爽,我们来改点别的
如果试图输入数据库的地址来下载数据库,将会自动跳转到搜狐网站,代码如下
<%
------此处省略连接数据200字,得到数据连接对象Conn
set rs=server.createobject("adodb.recordset")
sql="select notdown from NotDown"
str="<%response.redirect(""http://www.sohu.com"")"&chr(37)&">"
''''''''''由于字段是二进制数据,我们要是直接把Str字符串字入数据库的话会有一点问题
''''''''''在VBS中每一个字符占两个字节,所以我们要去掉高位的空字节
for i=1 to lenb(str)
if midb(str,1,i)<>0 then
data=data+ascb(midb(str,1,i))
end if
next

rs.open sql,0,3
data=rs(0).AppendChunk(data) '写入二进制数据
rs.update
rs.close
set rs=nothing
%>
OK了,看看运行效果,甚至还可以加入一段JS脚本,弹出一个对话框,吓吓那些下载数据库的小猫们,还不敢快试试去
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-7 06:51:03 | 只看该作者
三 解决
大家应该比较了解动网论坛,他的数据库里有一个NotDown的表,这个表只有一个字段,并且这个字段的类型是OLE型,用于存放二进制的数据,这个表有什么作用呢?呵呵...
把动网的数据库扩展名改成ASP,然后在浏览器里输入对应路径的数据库地址,看到什么了?一串错误的ASP脚本错误的信息,当然数据库也没办法DOWN下来了,为什么会这样呢,那个NotDown表究竟存放的是什么呢??
大家好好看看第二节中的第3种方法,仔细琢磨一下应该不难明白结论,正是因为NotDown表是有类似这样的脚本致使ASP.DLL把它当作真正的ASP文件来执行,但是这恰恰是动网数据库故意安排的语法错误,致使ASP.DLL解释里出错,因而把ASP出错信息显示出来,从而保护了真正的数据.
四 实践
NotDown表中倒底写了些什么呢??呵呵,是不是有点急了.
我们知道NotDown表由于是二进制字段,所有我们读写数据库的时候,也要改一改常规,ADO中专门有读写二进制字段的方法它们分别是AppendChunk 和GetChunk 有了这两个方法我们就可以看看那个表里面究竟是啥玩意了
<%
------此处省略连接数据200字,得到数据连接对象Conn
set rs=server.createobject("adodb.recordset")
sql="select notdown from NotDown"
rs.open sql,0,1
data=rs(0).GetChunk(rs(0).ActualSize) '读出所有的二进制数据
rs.close
set rs=nothing
----关闭数据库连接
response.BinaryWrite(data)''''由于data是二进制,所以要调用response打印二进制的方法将其输出
%>
过足瘾了吧,想知道结果是什么吗,赶紧回去调试看看啊
五 改进
上面的方法虽然是保住了数据库,但是有个错误的提示,总是觉得有点不爽,我们来改点别的
如果试图输入数据库的地址来下载数据库,将会自动跳转到搜狐网站,代码如下
<%
------此处省略连接数据200字,得到数据连接对象Conn
set rs=server.createobject("adodb.recordset")
sql="select notdown from NotDown"
str="<%response.redirect(""http://www.sohu.com"")"&chr(37)&">"
''''''''''由于字段是二进制数据,我们要是直接把Str字符串字入数据库的话会有一点问题
''''''''''在VBS中每一个字符占两个字节,所以我们要去掉高位的空字节
for i=1 to lenb(str)
if midb(str,1,i)<>0 then
data=data+ascb(midb(str,1,i))
end if
next

rs.open sql,0,3
data=rs(0).AppendChunk(data) '写入二进制数据
rs.update
rs.close
set rs=nothing
%>

看不太懂!!!!!!
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-7 06:51:06 | 只看该作者
好东西~~~先留着

谢了
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-7 06:51:09 | 只看该作者
不错不错,学习一下.
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-7 06:51:12 | 只看该作者
嗯,有见地!
回复 支持 反对

使用道具 举报

9#
发表于 2010-1-7 06:51:27 | 只看该作者
不错,但好像还没真正杜绝危险发生,看来在编程上也是没有永远的安全可言了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 20:29 , Processed in 0.073345 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表