程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 網站Access數據庫防下載幾例

網站Access數據庫防下載幾例

編輯:關於Access數據庫

網站Access數據庫防下載幾例
一、密碼式
  給數據庫起一個隨機復雜的名稱,避免被猜到被下載,這種方式在以前很流行,因為大家都對自己的代碼很有自信。但隨著錯誤提示對數據庫地址的洩露導致數據庫被非法下載,這種方式也就越來越少人用了。

二、"#"式
  在數據庫名稱裡加上#號,從URL上請求時#是請求地址和請求參數的一個分隔字符,如果知道了數據庫名,直接請求的話,如:http://www.xx.com/access#.mdb,WEB服務器會認為請求的是access而不是Access#.mdb,所以會提示找不到文件,但是很遺憾,URL中對於這些特殊的字符都會有一個特殊的表示方式,#的特殊表示就是%23,如http://www.xx.com/access%23.mdb,那麼Access#.mdb將會被下載。還有如果用FlashGet之類的下載工具也可以直接下載。

三、ASP式
  這種作法是比較專業但也是很安全的也是現在比較流行的作法,但是現在許多的人只是作了一半,只是將數據名改成ASP而以,這樣的話直接用FlashGet之類的下載工具一樣可以將數據庫下載,這種方式的正確作法有兩步:

  第一步:在數據庫內創建一個字段,名稱隨意,類型是OLE對象,內容設置為單字節型的"<%",即ASP代碼chrB(asc("<")) & chrB(asc("%"))的運行結果。

  第二步:將數據庫改名為ASP。
  這樣從URL上直接請求這個數據庫將會提示"缺少關閉腳本分隔符",從而拒絕下載,下面一段代碼來完成OLE對象的插入工作,只要將數據庫名設置好,然後放在數據庫同一目錄下運行就可以了。

  代碼如下:
  <%
  db="d.mdb" ’數據庫地址
  set conn=server.createobject("Adodb.Connection")
  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
  conn.open connstr
  conn.execute("create table notdownload(notdown oleobject)")
  set rs=server.createobject("adodb.recordset")
  sql="select * from notdownload"
  rs.open sql,conn,1,3
  rs.addnew
  rs("notdown").appendchunk(chrB(asc("<")) & chrB(asc("%")))
  rs.update
  rs.close
  set rs=nothing
  conn.close
  set conn=nothing
  %>  
  這段代碼運行完之後將會在數據庫內生成一個notdownload表,表內字段是notdown。如果數據庫內已有同名的數據表存在請將代碼內的notdownload改成自己想要的數據表名即可。

四、asa式 推薦
  這種方式的真谛是利用IIS對ASA文件的保護,從而使得數據庫文件不能從URL上直接請求下載,但是這種方式被誤解成只要將文件後綴改成ASA就可以了。要知道IIS只是對global.asa這個文件名有請求保護,所以這種方式只能將數據庫名設置為global.asa,而且要注意的是,設置成global.asa之後最好不要將其放在主機或虛擬目錄的根目錄裡,不然會被IIS當成正常的global.asa文件嘗試運行

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved