Coldfusion MX技巧精華收集(1)第3/5頁
更新時間:2007年03月15日 00:00:00 作者:
內(nèi)容:
為應用程序加上安全防護
ColdFusion 企業(yè)版本身內(nèi)建了一套安全防護架構(gòu)。然而如果你無法取得企業(yè)版的 ColdFusion 服務器,或者不想使用內(nèi)建的安全機制,那么你也可以建構(gòu)一套自己的應用程序安全防護功能。在這里我們提供一些實作想法,好讓你有個開端。
首先你得先建立好一個樣版(template),內(nèi)含一個使用者登入窗體,該窗體里面必須包含 UserName 以及 Password 這兩個字段。請把這個檔案儲存成為 loginform.cfm,日后當使用者未經(jīng)過認證時,該使用者便會被導向到這個登入頁面。
在 ColdFusion 環(huán)境里面,一個應用程序的相關(guān)定義與參數(shù)設定是記錄在 application.cfm 這個檔案里面的,而這個檔案正是用來放置應用程序范圍安全機制相關(guān)程序的最佳地點。在這里我們將會使用一個使用者狀態(tài)(session)變量來記錄使用者的認證狀態(tài)(雖然你也可以改用客戶端變量(client variable)來實作這項功能)。
<CFPARAM NAME="SESSION.VALIDATED" DEFAULT="No">
一旦我們定義好 SESSION.VALIDATED 這個變量,接下來便可以檢查使用者是否已經(jīng)通過認證:
<CFIF SESSION.VALIDATED IS "No">
一旦我們發(fā)現(xiàn)使用者尚未通過認證,我們便可以透過一連串程序代碼來檢查使用者是否來自登入窗體頁面,然后比對使用者輸入的帳號與密碼是否有效,最后便可讓使用者通過認證程序。在這個程序的任何一個階段里面,如果使用者未經(jīng)授權(quán),我們便把該使用者導向到登入窗體頁面,并且停止執(zhí)行接下來的任何程序代碼。請參考下面這段范例程序,里面的批注會說明每個步驟的功能與用處。
<!--- 如果使用者是來自登入窗體頁面... --->
<CFIF ISDEFINED("FORM.Password") AND ISDEFINED("FORM.UserName")>
<!--- 根據(jù)接收到的使用者名稱,到數(shù)據(jù)庫中查詢該使用者的資料 --->
<CFQUERY NAME="CheckPassword" DATASOURCE="mydsn">
SELECT UserName, Password
FROM Users
WHERE (UserName = '#FORM.UserName#')
</CFQUERY>
<!--- 如果密碼正確,則授與該使用者存取這個應用程序的權(quán)力 --->
<CFIF FORM.PASSWORD IS #CheckPassword.Password#>
<!--- 讓使用者通過認證 --->
<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)通過認證。略過安全性檢查,繼續(xù)執(zhí)行應用程序的其它部分。 --->
</CFIF>
如果你把上面這段程序代碼放在 application.cfm 里面,那么它便可以為你的整個應用程序提供基本的安全機制。
相關(guān)文章
ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程
ColdFusionMX 編程指南 ColdFusionMX Basic Tag編程...2007-03-03ColdFusionMX 編程指南 ColdFusionMX編程入門
ColdFusionMX 編程指南 ColdFusionMX編程入門...2007-03-03