為應(yīng)用程序加上安全防護(hù) 作者: Kyle 2/16/03
內(nèi)容:
為應(yīng)用程序加上安全防護(hù) ColdFusion 企業(yè)版本身內(nèi)建了一套安全防護(hù)架構(gòu)。然而如果你無法取得企業(yè)版的 ColdFusion 服務(wù)器,或者不想使用內(nèi)建的安全機(jī)制,那么你也可以建構(gòu)一套自己的應(yīng)用程序安全防護(hù)功能。在這里我們提供一些實(shí)作想法,好讓你有個(gè)開端。
首先你得先建立好一個(gè)樣版(template),內(nèi)含一個(gè)使用者登入窗體,該窗體里面必須包含 UserName 以及 Password 這兩個(gè)字段。請(qǐng)把這個(gè)檔案儲(chǔ)存成為 loginform.cfm,日后當(dāng)使用者未經(jīng)過認(rèn)證時(shí),該使用者便會(huì)被導(dǎo)向到這個(gè)登入頁面。
在 ColdFusion 環(huán)境里面,一個(gè)應(yīng)用程序的相關(guān)定義與參數(shù)設(shè)定是記錄在 application.cfm 這個(gè)檔案里面的,而這個(gè)檔案正是用來放置應(yīng)用程序范圍安全機(jī)制相關(guān)程序的最佳地點(diǎn)。在這里我們將會(huì)使用一個(gè)使用者狀態(tài)(session)變量來記錄使用者的認(rèn)證狀態(tài)(雖然你也可以改用客戶端變量(client variable)來實(shí)作這項(xiàng)功能)。
<CFPARAM NAME="SESSION.VALIDATED" DEFAULT="No"> 一旦我們定義好 SESSION.VALIDATED 這個(gè)變量,接下來便可以檢查使用者是否已經(jīng)通過認(rèn)證:
<CFIF SESSION.VALIDATED IS "No"> 一旦我們發(fā)現(xiàn)使用者尚未通過認(rèn)證,我們便可以透過一連串程序代碼來檢查使用者是否來自登入窗體頁面,然后比對(duì)使用者輸入的帳號(hào)與密碼是否有效,最后便可讓使用者通過認(rèn)證程序。在這個(gè)程序的任何一個(gè)階段里面,如果使用者未經(jīng)授權(quán),我們便把該使用者導(dǎo)向到登入窗體頁面,并且停止執(zhí)行接下來的任何程序代碼。請(qǐng)參考下面這段范例程序,里面的批注會(huì)說明每個(gè)步驟的功能與用處。
<!--- 如果使用者是來自登入窗體頁面... ---> <CFIF ISDEFINED("FORM.Password") AND ISDEFINED("FORM.UserName")> <!--- 根據(jù)接收到的使用者名稱,到數(shù)據(jù)庫中查詢?cè)撌褂谜叩馁Y料 ---> <CFQUERY NAME="CheckPassword" DATASOURCE="mydsn"> SELECT UserName, Password FROM Users WHERE (UserName = '#FORM.UserName#') </CFQUERY>
<!--- 如果密碼正確,則授與該使用者存取這個(gè)應(yīng)用程序的權(quán)力 ---> <CFIF FORM.PASSWORD IS #CheckPassword.Password#>
<!--- 讓使用者通過認(rèn)證 ---> <CFSET SESSION.VALIDATED = "Yes">
<!--- 如果密碼不正確,則再次顯示登入窗體 ---> <CFELSE>
<CFINCLUDE TEMPLATE="/mypath/loginform.cfm"> <CFABORT>
</CFIF>
<!--- 如果窗體變量是處于未定義狀態(tài),表示使用者并非來自于登入窗體頁面,因此我們顯示登入窗體。 ---> <CFELSE>
<CFINCLUDE TEMPLATE="/mypath/loginform.cfm"> <CFABORT>
</CFIF>
<!--- 如果 SESSION.VALIDATED 變量的值已經(jīng)是 YES 了,表示使用者之前已經(jīng)通過認(rèn)證。略過安全性檢查,繼續(xù)執(zhí)行應(yīng)用程序的其它部分。 ---> </CFIF>
如果你把上面這段程序代碼放在 application.cfm 里面,那么它便可以為你的整個(gè)應(yīng)用程序提供基本的安全機(jī)制。
出處:
責(zé)任編輯:藍(lán)色
上一頁 Macromedia ColdFusion MX 的新功能 下一頁 讓客戶端變量逾期
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|