Board logo

標題: [教學] (ASP教學第15篇) 資料庫保全與存取 [打印本頁]

作者: 小誌    時間: 2010-5-13 01:51     標題: (ASP教學第15篇) 資料庫保全與存取

雖然使用資料庫來存放與管理資料是非常方便且有效率的,但是,當瀏覽者知道了我們資料的資料庫檔案名稱與資料庫檔案所在的路徑位置,這樣瀏覽者就可利用超連結存取的方式將我們的資料庫檔案下載儲存起來了,您不要說不會呦!網路上別具用心的人可多著呢。

為了避免我們的資料庫檔案被某一些別具用心的瀏覽者連結下載,而進行不當的破壞行為,因此我們必須將存放資料的資料庫檔案內容加以編碼,同時將資料庫加上安全鎖,以密碼設定的方式來進行資料庫檔案的保全措施。

資料庫檔案的編碼
要如何為資料庫檔案編碼?因為我們所介紹的資料庫都是採用ACCESS資料庫檔案類型,因此!我們就以ACCESS資料庫檔案類型為對象來加以解說。
首先,我們來瞭解一下:資料庫檔案編碼的目的為何?其目的乃是將資料況檔案內容加以改編成一般看來毫無意義的亂碼內容,我們將資料庫檔案編碼後,就可以預防有心者利用某些編輯器採檔案檢視編輯的方式來查看我們資料庫檔案的內容,就筆者的經驗,利用此方式來查看資料庫檔案的內容,確實可獲得某些程度的資訊,因此,資料庫檔案編碼的意義與實質效能是很大的。

ACCESS資料庫檔案編碼的步驟:
步驟一:
    直接開啟ACCESS程式,但是請先不要將欲進行編碼的資料庫檔案開啟(在標題列中只有"Microsoft Access"這兩個英文單字):
[attach]343[/attach]

步驟二:
    直接開啟ACCESS程式後,選取下拉式功能表『工具』-->『保全』-->『加密/解密資料庫』。
[attach]346[/attach]

注意:
這裡的『加密/解密資料庫』並不是加上密碼喔!這是語言翻譯的關係所造成的誤會,真正的密碼鎖定,將在後續的步驟中解說。


步驟三:
    選取下拉式功能表『加密/解密資料庫』功能項目後,接著會出現一個名為『資料庫加密/解密』的對話視窗,然後請選擇我們要進行編碼動作的資料庫檔案,選擇完畢後直接按下『確定』按鈕。
[attach]344[/attach]

步驟四:
    在『資料庫加密/解密』的對話視窗中,選擇我們要編碼的資料庫檔案並按下『確定』按鈕後,將會再出現一個名為『資料庫加密後另存成』的對話視窗,請在其中的『檔案名稱』欄位中填入進行編碼動作後資料庫檔案的名稱(本例為newteach.mdb),然後按下『儲存』按鈕,如此一來,原本未進行編碼的teach.mdb資料庫檔案就會被加以編碼,並且另存為newteach.mdb檔案。
[attach]345[/attach]
這樣就完成了ACCESS資料庫檔案的編碼工作,簡單吧!
作者: 小誌    時間: 2010-5-13 02:10

資料庫檔案密碼設定
完成資料庫檔案的編碼動作後,接下來就是為我們的資料庫檔案進行『密碼設定』的動作,密碼設定是指在以ACCESS開啟資料庫檔案時,以輸入密碼的方式確認操作者身分的動作:

步驟一:
    開啟ACCESS程式後,選取下拉式功能表『檔案』-->『開啟舊檔』。
[attach]347[/attach]

步驟二:
    選取下拉式功能表『開啟舊檔』功能項目後,接著會出現一個名為『開啟資料庫』的對話視窗,然後請選擇我們要進行密碼鎖定的資料庫檔案,選擇完畢後接著按下『開啟』按鈕右方的三角形下拉按鈕,選取『獨占式開啟』方式來開啟資料庫檔案。
[attach]348[/attach]

步驟三:
    以『獨占式開啟』方式來開啟資料庫檔案後,接著選取下拉式功能表『工具』-->『保全』-->『設定資料庫密碼』:
[attach]349[/attach]

步驟四:
    選取下拉式功能表『設定資料庫密碼』功能項目後,接著會出現一個名為『設定資料庫密碼』的對話視窗,然後請在對話視窗的『密碼』欄位中填入您要設定的開啟密碼(本例密碼為"1234"),接著在『驗證』欄位中再填入一次您剛剛在『密碼』欄位中所填入開啟密碼,填寫完畢後直接按下『確定』按鈕:
[attach]350[/attach]

步驟進行到此我們就已經完成了資料庫檔案上鎖的動作,以後若要使用Access來開啟這個經過我們設定密碼加鎖的資料庫檔案,Access就會出現一個『需要密碼』的對話視窗要求操作者先輸入密碼(如下圖所示),輸入正確的密碼後才可以開啟操作這個設定密碼加鎖的資料庫檔案。
[attach]351[/attach]
作者: 小誌    時間: 2010-5-13 02:21

鎖碼資料庫存取
當我們已經完成了資料庫檔案上鎖的動作以後,那ASP要如何來連結存取這個已經上鎖的資料庫檔案呢?如果我們在進行資料庫連結的時候沒有指定連結的開啟密碼,則ASP程式將因無法開啟資料而產生錯誤,如下圖所示:
[attach]352[/attach]

那我們該如何開啟已設定密碼加鎖的資料庫檔案呢?當我們建立一個資料庫連結物件Connection物件後,我們乃是利用Connection物件的Open方法來開啟資料庫,通常我們只給了Open方法兩個參數:資料庫驅動程式的Driver參數與欲開啟的資料庫檔案完整路徑檔名Dbq參數,現在,為了開啟已設定密碼加鎖的資料庫檔案,我們必須再加上一個密碼Pwd參數。

現在就假設我們有一個位編碼加密的資料庫檔案teach.mdb,以及一個我們完成編碼與密碼設定的newteach.mdb資料庫檔案來說明:對於未編碼加密的資料庫檔案teach.mdb,在連結資料庫時我們只會使用兩個參數:
  1. Set conobject = Server.CreateObject("ADODB.Connection")
  2. DBPath = Server.MapPath("teach.mdb")conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
複製代碼
現在若我們要開啟的是一個設定密碼上鎖的資料庫檔案newteach.mdb,我們就必須在Connection物件的Open方法中再增加一個『Pwd』的參數:
  1. Set conobject = Server.CreateObject("ADODB.Connection")
  2. DBPath = Server.MapPath("newteach.mdb")conobject.Open "Driver={Microsoft Access Driver (*.mdb);pwd=1234;};
  3. DBQ="&DBPath
複製代碼
『Pwd=1234』就是代表在連結開啟資料庫時同時傳送出一組密碼『1234』,就如同用Access開啟上鎖的資料庫檔案時於『需要密碼』的對話視窗中填入密碼是相同的意思。

check.asp(未加密碼參數)
  1. <%
  2. ID=Request("ID")  
  3. Password = Request("Password")
  4. ok=session("checkok")
  5. IF ok <> "yes" Then
  6.         Set conobject = Server.CreateObject("ADODB.Connection")
  7.         DBPath = Server.MapPath("newteach.mdb")
  8.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  9.         Set recobject=Server.CreateObject("ADODB.Recordset")
  10.         SQL = "Select * From 教職員認證 Where ID='" & ID & "'"
  11.            SQL = SQL & " And Password = '" & Password & "'"
  12.            recobject.Open SQL,conobject,1,1,1
  13.                    if Not recobject.Eof then
  14.                    ok = "yes"
  15.                    session("checkok")=ok
  16.             else
  17.             %>
  18. <HTML>
  19. <BODY>
  20. <h2 ALIGN="CENTER"><img border="0" src="login.gif"></h2>
  21. <CENTER>
  22. <FORM Action=<%=Request.ServerVariables("PATH_INFO")%> Method=post>
  23. <TABLE BORDER=1 CELLSPACING=0 >
  24.    <TR><TD ALIGN=RIGHT>登入名稱:</TD>
  25.    <TD><Input Type=Text Name=ID Size=10></TD></TR>
  26.    <TR><TD ALIGN=RIGHT>登入密碼:</TD>
  27.    <TD><Input Type=Password Name=Password Size=8></TD></TR>
  28. </TABLE><P>
  29. <INPUT Type=Submit Value=" 確 定 ">
  30. </FORM>
  31. </CENTER>
  32. </BODY>
  33. </HTML>
  34. <%
  35. Response.End
  36.             end if   
  37. End If
  38. %>
複製代碼
未加密碼參數,一進入網頁就出現錯誤:
[attach]353[/attach]

pwdcheck.asp(加密碼參數)
  1. %
  2. ID=Request("ID")  
  3. Password = Request("Password")
  4. ok=session("checkok")
  5. IF ok <> "yes" Then
  6.         Set conobject = Server.CreateObject("ADODB.Connection")
  7.         DBPath = Server.MapPath("newteach.mdb")
  8.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};pwd=1234;DBQ="&DBPath
  9.         Set recobject=Server.CreateObject("ADODB.Recordset")
  10.         SQL = "Select * From 教職員認證 Where ID='" & ID & "'"
  11.            SQL = SQL & " And Password = '" & Password & "'"
  12.            recobject.Open SQL,conobject,1,1,1
  13.                    if Not recobject.Eof then
  14.                    ok = "yes"
  15.                    session("checkok")=ok
  16.             else
  17.             %>
  18. <HTML>
  19. <BODY>
  20. <h2 ALIGN="CENTER"><img border="0" src="login.gif"></h2>
  21. <CENTER>
  22. <FORM Action=<%=Request.ServerVariables("PATH_INFO")%> Method=post>
  23. <TABLE BORDER=1 CELLSPACING=0 >
  24.    <TR><TD ALIGN=RIGHT>登入名稱:</TD>
  25.    <TD><Input Type=Text Name=ID Size=10></TD></TR>
  26.    <TR><TD ALIGN=RIGHT>登入密碼:</TD>
  27.    <TD><Input Type=Password Name=Password Size=8></TD></TR>
  28. </TABLE><P>
  29. <INPUT Type=Submit Value=" 確 定 ">
  30. </FORM>
  31. </CENTER>
  32. </BODY>
  33. </HTML>
  34. <%
  35. Response.End
  36.             end if   
  37. End If
  38. %>
複製代碼
使用加密碼參數連結資料庫,可正確看到登入畫面:
[attach]354[/attach]


完整範例與資料庫檔案:




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)