|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用户时常会发现其实自己并不是第一个选用MySQL数据库的先驱者。” 今天和animator实验了一下,把data.mdb文件更名为data.asp文件后放在wwwroot目次里。然后在IE中输出data.asp路径后,发明IE显现一片空缺,右键->观察源文件,跳出记事本,将内容另存为.mdb文件,用ACCESS翻开,发明必要暗码,也就是说最少文件头被损坏。
然后用Flashget实验下载data.asp文件,并另存为data.mdb文件,发明用ACCESS翻开无缺无损!看来,好一些编程职员在开辟的时分都以为,改了mdb后缀为asp就可以防下载的观点,是错的!背景数据库被下载关于一个asp+access的网站来讲无疑是一场仁至义尽的劫难。明天找了各方的文章,归结一下有以下9种举措避免数据库被下载(接待增补)。
1.发扬你的设想力修正数据库文件名
不必说,这是最最偷懒的办法,可是若打击者经由过程第三方路子取得了数据库的路径,就玩完了。好比说打击者原本只能拿到list权,了局不测看到了数据库路径,就能够堂而皇之地把数据库下载归去研讨了。别的,数据文件一般巨细都对照年夜,起再潜伏的文件名都瞒不了人。故保密性为最低。
2.数据库名后缀改成ASA、ASP等
此法须共同一些要举行一些设置,不然就会呈现本文开首的那种情形。
(1)二进制字段增加。
(2)在这个文件中到场,IIS就会按ASP语法来剖析,然后就会呈报500毛病,天然不克不及下载了。但是假如只是复杂的在数据库的文本大概备注字段到场<%是没用的,由于ACCESS会对个中的内容举行处置,在数据库里他会以<%的情势存在,有效!准确的办法是将<%存进OLE工具字段里,如许我们的目标就可以到达了。
操纵办法:
起首,用notepad新建一个内容为<%的文本文件,任意起个名字存档。
接着,用Access翻开您的数据库文件,新建一个表,任意起个名字,在表中增加一个OLE工具的字段,然后增加一个纪录,拔出之前创建的文本文件,假如操纵准确的话,应当能够看到一个新的名为"数据包"的纪录。便可。
3.数据库名前加"#"
只必要把数据库文件前名加上#、然后修正数据库毗连文件(如conn.asp)中的数据库地点。道理是下载的时分只能辨认#号前名的部分,关于前面的主动往失落,好比你要下载:http://www.pcdigest.com/date/#123.mdb(假定存在的话)。不管是IE仍是FLASHGET等下到的都是http://www.test.com/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)。
别的在数据库文件名中保存一些空格也起到相似感化,因为HTTP协定对地点剖析的特别性,空格会被编码为"%",如http://www.test.com/date/123;456.mdb,下载的时http://www.test.com/date/123%456.mdb。而我们的目次就基本没有123%456.mdb这个文件,以是下载也是有效的如许的修正后,即便你表露了数据库地点,一样平常情形下他人也是没法下载!
4.加密数据库
起首在拔取"工具->平安->加密/解密数据库,拔取数据库(如:employer.mdb),然后接断定,接着会呈现"数据库加密后另存为"的窗口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为employer1.mdb..要注重的是,以上的举措并非对数据库设置暗码,而只是对数据库文件加以编码,目标是为了避免别人利用其余工具来检察数据库文件的内容。
接上去我们为数据库加密,起首以翻开经由编码了的employer1.mdb,在翻开时,选择"独有"体例。然后拔取功效表的"工具->平安->设置数据库暗码",接着输出暗码便可。如许即便别人失掉了employer1.mdb文件,没有暗码他是没法看到employer1.mdb的。
加密后要修正数据库毗连页,如:
conn.open"driver={microsoftaccessdriver
(*.mdb)};uid=admin;pwd=数据库暗码;dbq=数据库路径"
如许修正后,数据库即便被人下载了,他人也没法翻开(条件是你的数据库毗连页中的暗码没有被保守)。
但值得注重的是,因为Access数据库的加密机制对照复杂,即便设置了暗码,解密也很简单。该数据库体系经由过程将用户输出的暗码与某一流动密钥举行"异或"来构成一个加密串,并将其存储在*.mdb文件从地点"&H42"入手下手的地区内。以是一个好的程序员能够轻松制造一个几十行的小程序就能够轻松地取得任何Access数据库的暗码。因而,只需数据库被下载,其信息平安仍然是个未知数。
5.数据库放在WEB目次外或将数据库毗连文件放到其他假造目次下
如你的WEB目次是e:webroot,能够把数据库放到e:data这个文件夹里,在e:webroot里的数据库毗连页中修正数据库毗连地点为:"../data/数据库名"的情势,如许数据库能够一般挪用,可是没法下载的,由于它不在WEB目次里!这个办法一样平常也不合适购置假造空间的用户。
6.利用ODBC数据源
在ASP等程序计划中,假如有前提,应只管利用ODBC数据源,不要把数据库名写在程序中,不然,数据库名将随ASP源代码的掉密而一同掉密,比方:
DBPath=Server.MapPath("../123/abc/asfadf.mdb")
conn.open"driver={MicrosoftAccessDriver (*.mdb)};dbq="&DBPath
可见,即便数据库名字起得再奇异,埋没的目次再深,ASP源代码掉密后,也很简单被下载上去。假如利用ODBC数据源,就不会存在如许的成绩了:conn.open"ODBC-DSN名",不外如许是对照烦的,目次挪动的话又要从头设置数据源了,更便利的办法请看第7,8法!
7.增加数据库名的如MDB的扩大映照
这个办法就是经由过程修正IIS设置来完成,合适有IIS把持权的伴侣,不合适购置假造主机用户(除非办理员已设置了)。这个办法我以为是今朝最好的。只需修正一处,全部站点的数据库都能够避免被下载。不必修正代码即便表露方针地点也能够避免下载。
我们在IIS属性---主目次---设置---映照---使用程序扩大那边增加.mdb文件的使用剖析。注重这里的选择的DLL(或EXE等)仿佛也不是恣意的,选择不妥,这个MDB文件仍是能够被下载的,注重最好不要选择选择asp.dll等。你能够本人多测试下,修正后下载数据库,就呈现(404或500等毛病)。
8.利用.net的优胜性
动网的木鸟就写过一个防不法下载文件的"WBAL防盗链工具"。
不外谁人只完成了避免非当地下载的,没有起到真实的防下载数据库的功效。不外这个办法已跟5法差未几能够经由过程修正.NET文件,完成当地也不克不及下载!
这几个办法中,只要第7和8个是一致性改的,一次修正设置后,全部站点的数据库都能够避免下载,其他几个就要分离修正数据库名和毗连文件,对照贫苦,不外关于假造主机的伴侣也只能如许了!
实在第6个办法应当是第5个办法的扩大,能够完成特别的功效,但关于不撑持.net的主机大概怕设置贫苦的话,仍是间接用第5个办法了,并且默许情形下第6个办法,仍然能够经由过程复制毗连到同主机的论坛或留言本宣布,然后就能够点击下载了。(由于如许的援用页是来自同主机的)
9.使用NTFS分区的文件权限设置(bypercyboy)
我们已晓得,ASP.NET中利用ADO.NET会见数据库,经由过程OleDb的毗连能够会见Access数据库——我们十分经常使用的低端数据库之一。本文会商了ASP.NET中大概看到的多少毛病提醒,从中看到Access2000和AccessXP创立的数据库文件,在会见呈现毛病时会呈现不太不异的毛病提醒。但愿对人人有所匡助。另外一个要点是,但愿经由过程此文,使人人对ASP.NET中Access数据库文件的NTFS权限设置有所新的熟悉。
(一)实行历程
为了叙说便利,举个详细例子做个实行:使用程序为/test,数据库寄存在D:wwwroot estdatadb1.mdb,我们已晓得在ASP.NET中是以一个叫做ASPNET假造用户的身份会见数据库的,我们必要给这个账户以特定的NTFS权限才干使ASP.NET程序一般运转。
为了失掉最严厉的NTFS权限设置,实行入手下手时我们给程序最低的NTFS权限:
a)D:wwwroot estdata文件夹的给用户ASPNET以以下权限:
同意回绝
完整把持 □□
修正 □□
读取及运转√□;
列出文件夹目次;√□
读取 √□
写进 □□
b)D:wwwroot estdatadb1.mdb文件自己给用户ASPNET以以下权限:
√同意未来自父系的可承继权限传布给该工具
1.1关于某个只包括有"SELECT"命令的aspx程序,上述权限设置运转时无停滞,即:上述权限已满意这类程序的运转了。
1.2关于包括有"UPDATE""INSERT""UPDATE"等命令的aspx程序。
(a)假如db1.mdb是Access2000创立的数据库,呈现以下毛病:
"/test"使用程序中的服务器毛病。
MicrosoftJet数据库引擎打不开文件D:wwwroot estdata。它已被其余用户以独有体例翻开,或没有检察数据的权限。
申明:实行以后Web哀求时代,呈现未处置的非常。请反省仓库跟踪信息,以懂得有关该毛病和代码中招致毛病的出处的具体信息。
非常具体信息:System.Data.OleDb.OleDbException:MicrosoftJet数据库引擎打不开文件D:wwwroot estdata。它已被其余用户以独有体例翻开,或没有检察数据的权限。
(b)假如db1.mdb是AccessXP创立的数据库,呈现以下毛病:"/test"使用程序中的服务器毛病。
操纵必需利用一个可更新的查询。
申明:实行以后Web哀求时代,呈现未处置的非常。请反省仓库跟踪信息,以懂得有关该毛病和代码中招致毛病的出处的具体信息。
非常具体信息:System.Data.OleDb.OleDbException:操纵必需利用一个可更新的查询。
(c)缘故原由开端剖析:由于包括有"UPDATE""INSERT""UPDATE"等命令,必要对数据库文件自己举行写进操纵,以是上述权限不克不及满意此需求,我们必要进一步摊开权限。
我们摊开一些权限,
a)D:wwwroot estdata文件夹稳定;
b)D:wwwroot estdatadb1.mdb文件自己给用户ASPNET以以下权限;
同意回绝
完整把持 □□
修正 □□
读取及运转√□;
列出文件夹目次;√□
读取 √□
写进 √□
1.3摊开权限后持续实行
(a)假如db1.mdb是Access2000创立的数据库,呈现以下毛病:"/test"使用程序中的服务器毛病。
不克不及锁定文件。
申明:实行以后Web哀求时代,呈现未处置的非常。请反省仓库跟踪信息,以懂得有关该毛病和代码中招致毛病的出处的具体信息。
非常具体信息:System.Data.OleDb.OleDbException:不克不及锁定文件。
(b)假如db1.mdb是AccessXP创立的数据库,没有呈现毛病。
(c)缘故原由开端剖析:我们发明在翻开Access数据库时,同时会在地点目次天生一个同名的*.ldb文件,这是一个Access的锁定标志。鉴于此,我们推测,用户ASPNET会见Access数据库时,也必要天生一个锁定标志,而该目次没有同意其写进,因而堕落。至于AccessXP创立的数据库为何没有这个毛病,缘故原由还不得而知。
我们进一步摊开权限,
a)D:wwwroot estdata文件夹给用户ASPNET以以下权限:
同意回绝
完整把持 □□
修正 □□
读取及运转√□;
列出文件夹目次;√□
读取 √□
写进 √□
b)D:wwwroot estdatadb1.mdb文件自己给用户ASPNET以以下权限:
√同意未来自父系的可承继权限传布给该工具
1.4持续实行,发明毛病已办理,那末下面这个权限就是我们必要摊开的"最低权限"。
(a)假如db1.mdb是Access2000创立的数据库,我们会发明一个小成绩:天生的*.ldb文件不会本人删除,会见后该文件仍然存在,但这个成绩不会影响ASP.NET的一般运转。
(b)假如db1.mdb是AccessXP创立的数据库,没有呈现下面相似成绩。
(c)缘故原由开端剖析:我们仅仅是给了ASPNET以写进文件夹的权限,没有给它修正的权限,以是文件一旦写进,便没法修正其内容,*.ldb也就删除不失落了。
假如非要办理这个成绩,进一步摊开权限为:
a)D:wwwroot estdata文件夹给用户ASPNET以以下权限:
同意回绝
完整把持 □□
修正 √□
读取及运转√□;
列出文件夹目次;√□
读取 √□
写进 √□
b)D:wwwroot estdatadb1.mdb文件自己给用户ASPNET以以下权限:
√同意未来自父系的可承继权限传布给该工具
1.5附带着,实行另外一种情况:我们把db1.mdb在Access翻开编纂,同时会见ASP.NET。
(a)假如db1.mdb是Access2000创立的数据库,我们发明并没有呈现甚么成绩。
(b)假如db1.mdb是AccessXP创立的数据库,呈现以下毛病:&nb。
(t003)
一个相关的问题是第三方支持的资格问题,尽管直接来自厂商的支持和服务可以一定程度上减缓这个问题,但是,对于有的企业来说,通过强有力的本地化支持显然更有吸引力。 |
|