- Login
帳號:
密碼:
ASP MENU
線上教學
   ASP 教學
VB.NET 教學
JSP 教學
JAVA 教學
完整 ASP 教學
程式下載
   ASP 程式下載
提供 ASP 程式
程式量身訂做
   收費標準
填寫需求表
討論交流專區
   程式討論區
電腦資訊交流
工作機會
   社會人就職情報
汎亞人力銀行
大台中人力銀行
大高雄人力銀行
相關連結
   ASP 虛擬空間
ASP 相關網站
聯絡我們
   意見信箱
加入會員程式討論區線上購物回首頁
ASP 教學
[轉貼] ASP+Access的安全隱患及對策
隨著Internet的發展,Web技術日新月異。繼通用通信閘接口(CGI)之后,“ASP”(Active Server Pages)作為一種典型的服務器端網頁設計技術,被廣泛地應用在網上銀行、電子商務、搜索引擎等各種互聯網應用中。同時Access資料庫作為微軟推出的以標準JET為引擎的桌面型資料庫系統,由於具有操作簡單、界面友好等特點,具有較大的使用者群體。因此ASP+Access成為許多中小型網上應用系統的首選方案。但ASP+Access解決方案在為我們帶來便捷的同時,也帶來了不容忽視的安全問題。

ASP+Access的安全隱患

  ASP+Access解決方案的主要安全隱患來自Access資料庫的安全性,其次在於ASP網頁設計過程中的安全漏洞。

  1.Access資料庫的存儲隱患
  在ASP+Access應用系統中,如果獲得或者猜到Access資料庫的存儲路徑和資料庫名,則該資料庫就可以被下載到本地。例如:對於網上書店的Access資料庫,人們一般命名為book.mdb、store.mdb等,而存儲的路徑一般為“URL/database”或干脆放在根目錄(“URL/”)下。這樣,只要在瀏覽器地址欄中敲入地址:“URL/database/store.mdb”,就可以輕易地把store.mdb下載到本地的機器中。

  2.Access資料庫的解密隱患
  由於Access資料庫的加密機制非常簡單,所以即使資料庫設置了密碼,解密也很容易。該資料庫系統通過將使用者輸入的密碼與某一固定密鑰進行異或來形成一個加密串,並將其存儲在*.mdb文件中從地址“&H42”開始的區域內。由於異或操作的特點是“經過兩次異或就恢復原值”,因此,用這一密鑰與*.mdb文件中的加密串進行第二次異或操作,就可以輕松地得到Access資料庫的密碼。基於這種原理,可以很容易地編制出解密程序。
  由此可見,無論是否設置了資料庫密碼,只要資料庫被下載,其資訊就沒有任何安全性可言了。

  3.源代碼的安全隱患
  由於ASP程序採用的是非編譯性語言,這大大降低了程序源代碼的安全性。任何人只要進入站台,就可以獲得源代碼,從而造成ASP應用程序源代碼的泄露。

  4.程序設計中的安全隱患
  ASP代碼利用表單(form)實現與使用者交互的功能,而相應的內容會反映在瀏覽器的地址欄中,如果不採用適當的安全措施,只要記下這些內容,就可以繞過驗證直接進入某一頁面。例如在瀏覽器中敲入“……page.asp?x=1”,即可不經過表單頁面直接進入滿足“x=1”條件的頁面。因此,在設計驗證或注冊頁面時,必須採取特殊措施來避免此類問題的發生。

提高資料庫的安全性

  由於Access資料庫加密機制過於簡單,因此,如何有效地防止Access資料庫被下載,就成了提高ASP+Access解決方案安全性的重中之重。

  1.非常規命名法
  防止資料庫被找到的簡便方法是為Access資料庫文件起一個復雜的非常規名字,並把它存放在多層目錄下。例如,對於網上書店的資料庫文件,不要簡單地命名為“book.mdb”或“store.mdb”,而是要起個非常規的名字,例如:faq19jhsvzbal.mdb,再把它放在如./akkjj16t/kjhgb661/acd/avccx55 之類的深層目錄下。這樣,對於一些通過猜的方式得到Access資料庫文件名的非法訪問方法起到了有效的阻止作用。

  2.使用ODBC資料源
  在ASP程序設計中,應盡量使用ODBC資料源,不要把資料庫名直接寫在程序中,否則,資料庫名將隨ASP源代碼的失密而一同失密。例如:
  DBPath = Server.MapPath(“./akkjj16t/kjhgb661/acd/avccx55/faq19jhsvzbal.mdb ”)
  conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath
  可見,即使資料庫名字起得再怪異,隱藏的目錄再深,ASP源代碼失密后,資料庫也很容易被下載下來。如果使用ODBC資料源,就不會存在這樣的問題了:
  conn.open “ODBC-DSN名”

對ASP頁面進行加密

  為有效地防止ASP源代碼泄露,可以對ASP頁面進行加密。一般有兩種方法對ASP頁面進行加密。一種是使用組件技術將程式化邏輯封裝入DLL之中;另一種是使用微軟的script Encoder對ASP頁面進行加密。筆者認為,使用組件技術存在的主要問題是每段代碼均需組件化,操作比較煩瑣,工作量較大;而使用script Encoder對ASP頁面進行加密,操作簡單、收效良好。script Encoder方法具有許多優點:

  1.HTML仍具有很好的可編輯性。
  script Encoder只加密在HTML頁面中嵌入的ASP代碼,其他部分仍保持不變,這就使得我們仍然可以使用FrontPage或Dreamweaver等常用網頁編輯工具對HTML部分進行修改、完善,只是不能對ASP加密部分進行修改,否則將導致文件失效。

  2.操作簡單。
  只要掌握幾個命令行參數即可。script Encoder的運行程序是screnc.exe,其使用方法如下:
  screnc [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile
  其中的參數含義如下:
  s:屏蔽屏幕輸出;
  f:指定輸出文件是否覆蓋同名輸入文件;
  xl:是否在.asp文件的頂部添加@Language指令;
  l:defLanguag指定缺省的腳本語言;
  e:defExtension 指定待加密文件的擴展名。

  3.可以批量加密文件。
  使用script Encoder可以對當前目錄中的所有的ASP 文件進行加密,並把加密后的文件統一輸出到相應的目錄中。例如:
  screnc *.asp c:\temp

  4. script Encoder是免費軟體。該加密軟體可以從微軟網站下載:http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe。下載后,運行安裝即可。

利用Session對象進行注冊驗證

  為防止未經注冊的使用者繞過注冊界面直接進入應用系統,可以採用Session對象進行注冊驗證。Session對象最大的優點是可以把某使用者的資訊保留下來,讓后續的網頁讀取。例如,要設計如圖1所示的注冊頁面。

圖1

  設計要求使用者注冊成功后系統啟動hrmis.asp?page=1頁面。如果不採用Session對象進行注冊驗證,則使用者在瀏覽器中敲入“URL/hrmis.asp?page=1”即可繞過注冊界面,直接進入系統。利用Session對象可以有效阻止這一情況的發生。相關的程序代碼如下:
  <%
  “ 讀取使用者輸入的賬號和密碼
  UserID = Request(“UserID”)
  Password = Request(“Password”)
  “ 檢查UserID 及Password 是否正確(實際程序可能會比較復雜)
  If UserID <>“hrmis” Or Password <>
  “password” Then
  Response.Write “賬號錯誤!”
  Response.End
  End If
  “將Session 對象設置為通過驗證狀態
  Session(“Passed”) = True
  %>
  進入應用程序后,首先進行驗證:
  <%
  “如果未通過驗證,返回Login狀態
  If Not Session(“Passed”) Then
  Response.Redirect “Login.asp”
  End If
  %>




頂端
本網頁最佳瀏覽模式為:瀏覽器 IE4.0 以上    解析度: 800 x 600
Copyright © 2000-2017 COOLASP All Rights Reserved