自从搞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脚本,弹出一个对话框,吓吓那些下载数据库的小猫们,还不敢快试试去
ASP终极防下载(转)的更多相关文章
-
Asp.net mvc 下载文件
前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...
-
ASP.NET批量下载文件的方法
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
-
ASP.NET批量下载文件
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
-
asp.net mvc5 下载文件方法
控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成 ...
-
asp.net中下载文件的问题
今天解决web的文件下载问题,下载的方法网上很多,不过我的下载有点特殊: 1.下载按钮在gridview中,是模板列的linkButton: 2.使用了ajax控件: 所以,在下载时总是报错,通过查找 ...
-
遭遇Asp.Net长文件名下载的问题和解决办法
在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: <!--<br /> ...
-
Asp.net 同时下载多个文件
整理自网络 下载思路是首先把多个文件进行压缩,然后再下载压缩成的压缩包 引用文件dll:ICSharpCode.SharpZipLib.dll 1. 合成下载文件夹 Protected Sub btn ...
-
ASP.NET MVC 下载列表
在ASP.NET WebForm里要想网站某个文件夹的文件列出来供用户下载似乎很简单,WebForm帮你做了很多事,只需要在Html文件里写: <a href="~/download/ ...
-
asp.net 批量下载实现(打包压缩下载)
1.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default ...
随机推荐
-
iOS开发查看手机app本地存储的文件
开发过程中,有时会在本地存储一些文件,但是我们不确定有没有存上,可以通过以下方法来查看测试手机上本地存储的文件: 1.选择xcode上面的window下面的Devices 2.先在左边选中你当前的设备 ...
-
对 OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 一文的理解
一点最重要的学习方法: 当你读一篇论文读不懂时,如果又读了两遍还是懵懵懂懂时怎么办???方法就是别自己死磕了,去百度一下,如果是很好的论文,大多数肯定已经有人读过并作为笔记了的,比如我现在就把我读过 ...
-
编程算法基地-2.1利用字符串API
2.1利用字符串API 字符串是Java类型最常用.并且是复合类型 串非常经常用于,其最佳API熟悉文档. 推断串中有没有反复的字符 String s ="abcdebxyz"; ...
-
asp.net core 系列之中间件进阶篇-编写自定义中间件(middleware)
中间件是被用到管道(pipeline)上来处理请求(request)和响应的(response). asp.net core 本身提供了一些内置的中间件,但是有一些场景,你可能会需要写一些自定义的中间 ...
-
pip 升级 pip
For Python2 sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pip For Python3 ...
-
【分布式】1、CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
-
安全测试&#160;web应用安全测试之XXS跨站脚本攻击检测
web应用安全测试之XXS跨站脚本攻击检测 by:授客 QQ:1033553122 说明 意在对XSS跨站脚本攻击做的简单介绍,让大家对xss攻击有个初步认识,并能够在实际工作当中运用本文所述知识做些 ...
-
Python实现机器学习算法:EM算法
''' 数据集:伪造数据集(两个高斯分布混合) 数据集长度:1000 ------------------------------ 运行结果: ---------------------------- ...
-
让机器说话(文字转美女语音,擅长中英文哦),大小600K(免费下载)!
机器人之路的第二小步:说话(文字转语音美女哦),大小600K(免费下载)! 机器人之路的第二小步:说话(文字转语音美女哦),准确率特别高,普通话标准,中英文都可以说,大家可以体验一下,请下载到电脑上在 ...
-
android手机安全性测试手段
罗列一下自己常用的android手机安全性测试攻击手段: 1. fiddler和tcpdump+wireshark抓包分析,模拟修改http请求参数,检验漏洞 2. 修改AndroidManifest ...