防止ASP下载的终极方法

下载

  自从搞ASP+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脚本,弹出一个对话框,吓吓那些下载数据库的小猫们,还不敢快试试去。

时间: 2024-07-29 00:00:18

防止ASP下载的终极方法的相关文章

ASP.NET批量下载文件的方法_实用技巧

本文实例讲述了ASP.NET批量下载文件的方法.分享给大家供大家参考.具体方法如下: 一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到客户端.最后删除临时文件夹.  二.代码实现 1.ASP.NET批量下载 核心代码 复制代码 代码如下: //遍历服务器指定文件夹下的所有文件 string path = "uploads/Image/"

网站安全之ASP程序加密/解密方法大揭密

安全|程序|加密|解密 如今,用ASP技术构建的网站随处可见.由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的难题,网上求解这类问题的帖子非常多,下面我们就来谈谈ASP程序的加密方法. 一.如何加密ASP程序? 目前对ASP程序的加密方法主要有三种:脚本编码器(SRCENC.EXE)加密.组件加密.自编程序加密,下面我们就来展开介绍这三种加密方法. 1.使用微软的MS Script En

看asp源码的方法及工具20种

众所周知windows平台漏洞百出,补丁一个接一个,但总是补也补不净.我把我所知道的20种看asp源码的方法总结了一下,并且用c#写了个应用程序来扫描这些漏洞,发现虽然大部分的方法已经不起做用,但还是有一些漏网之鱼的:),结果这两天真看到不少站的源代码,包括数据库密码,如果用access的可以把库下载下来,而用sql server的如果不是用udl,dsn等来连接的话,也可以通过tcp/ip网络库连接到数据库,为所欲为呀.先面把这20种方法列在下面: .%81::DATA%2e%2e%41sp+

CentOS 5.1下跑Mono和Asp.net的实现方法分享

下载编译环境: yum install gcc bison pkgconfig glib2-devel gettext make httpd-devel gcc-c++ libstdc++-devel 下载并解压源代码: wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.6.3.tar.bz2 wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.6.3.tar

asp下载防盗链代码_应用技巧

asp下载防盗链代码第一种:  终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码,相关代码如下:   复制代码 代码如下: <%   From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))   Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))   if mid(From_url,8,len(Serv_url)) <> 

防黑从基础做起,简单的ASP木马查杀方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 防黑从基础做起.简单的ASP木马查杀方法: 先下载一个文件查找工具:http://www.skycn.com/soft/17964.html 以下是ASP木马部分代吗:========================================================================================

CentOS 5.1下跑Mono和Asp.net的实现方法分享_Linux

下载编译环境:yum install gcc bison pkgconfig glib2-devel gettext make httpd-devel gcc-c++ libstdc++-devel 下载并解压源代码:wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.6.3.tar.bz2wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.6.3.tar.bz

asp下载远程服务器文件[rar,jpg,gif,zip,png]

asp下载远程服务器文件[rar,jpg,gif,zip,png] < % function   downfilea(d_target,   s_target) On   Error   Resume   Next       dim   myhttp,   objstream     set   myhttp   =   server.createobject( "MSXML2.XMLHTTP ")     myhttp.open   "GET ",   d

jquery.Ajax()方法调用Asp.Net后台的方法解析

 本篇文章主要是对jquery.Ajax()方法调用Asp.Net后台的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧.   1.无参数的方法调用 asp.net code:    代码如下: using System.Web.Script.Services;      [WebMethod]    public static string SayHello()    {