基金項目:河北省交通廳“九五”行業聯合科技攻關項目,編號“HG-950403”,名稱“邯鄲交通信息網絡研究”
[摘要] 在Web應用中,操作用戶的信息和操作過程中的數據經常會存放在Session中,Session信息可提高程序的運行效率和靈活性。當用戶退出系統后,如果不對該用戶的Session信息及時清除,在一定的時間內仍有可能會駐留在服務器上,不僅會造成Web服務器資源浪費,而且更為嚴重的會使用戶信息泄露。本文使用ASP.NET開發Web應用程序,對程序的注銷技術進行一些探討。
[關鍵詞] Session JavaScript onunload事件
一、引言
Session中文翻譯為會話,在web開發語境下的含義是指一類用來在客戶端與服務器之間保持狀態的解決方案或存儲結構。一般情況下服務器會為seesion設置了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,服務器就可以認為客戶端已經停止了活動,才會把session刪除以節省存儲空間,但瀏覽器不會主動在關閉之前通知服務器它將要關閉,因此服務器根本不會有機會知道瀏覽器已經關閉,除非程序通知服務器刪除一個session,否則服務器會在一定時間內保留,這樣不僅會造成Web服務器資源浪費,也會造成用戶信息泄露,存在安全隱患。程序一般提供注銷功能刪除session,但用戶可能直接關閉瀏覽器或跳轉到其他站點,如何在不確定的情況下,對session信息及時清空對于提高Web服務器運行效率和程序的安全性都有很大的幫助。本文在Asp.net環境下對任意操作下的注銷技術進行探討。
二、功能的實現
Login.aspx頁面驗證用戶身份成功后,會進入程序的主頁面main.htm。Main.htm是一個框架,包含三個框架。上面框架是提示信息頁main_top.aspx,包含登陸的用戶姓名,單位題頭,當前服務器的日期和關閉程序的HTM的按鈕。main_top.aspx的HTML代碼中部分有一個JAVASCRIPT的代碼:
main_top.aspx的父窗口是main.htm,代碼window.parent.window.close ()引發main.htm的window.onunload事件,window.onunload事件又會引發window.onbeforeunload事件,因此在main.htm的頭文件中添加javascript代碼:window.onunload = function() { var http = new ActiveXObject(”MSXML2.XMLHTTP”); http.open(“get”, ”Logout.aspx“);http.send();}} window.onbeforeunload = function() { event.returnValue =“關閉窗口同時將注銷系統?!?}XmlHttp是一套可以在腳本語言中通過http協議傳送或從接收XML及其他數據的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面。XmlHttp提供客戶端同http服務器通訊的協議。客戶端可以通過XmlHttp對象(MSXML2.XMLHTTP.3.0)向http服務器發送請求并使用微軟XML文檔對象模型處理回應。多數瀏覽器都增加了對XmlHttp的支持,IE中使用ActiveXObject方式創建XmlHttp對象,其他瀏覽器如:Firefox、Opera等通過window.XMLHttpRequest來創建xmlhttp對象。 main.htm在關閉之前執行Logout.aspx頁面,該頁面專門負責注銷功能,頁面上只有一個LinkButton控件,在Page_Load事件中,添加如下代碼:LinkButton1_Click(sender,e);在LinkButton控件的Click事件中添加清除Session信息的代碼,如:Session.Remove (“userid”);Session.Remove (“username”);Session.Remove (“lsdata”);Session.Remove (“rolesetup”)。
經過以上的處理,當用戶關閉窗口或轉向其他地址時,會彈出窗口“確定”會退出程序并清除Session信息。
三、總結
在大型的Web應用中,數據的并發訪問量很大,Web服務器負荷較重,及時釋放不必要的資源,對應用程序和Web服務器的穩定性、可靠性和運行效率都有正面的益處。Session作為客戶端與服務器的通信會話占用Web服務器消耗較多,因此釋放Session中的臨時交換數據,可有效地提高服務器端的資源利用率,同時及時清除Session中的用戶信息,可避免黑客攻擊,保護用戶數據的安全,維護了用戶利益。
參考文獻:
[1]微軟公司.ASP.NET安全應用程序開發[M].北京:清華大學出版社,2003
[1]李建忠:Microsoft.NET框架程序設計[M].北京:清華大學出版社,2003
[2]桂思強:ASP.net與數據庫程序設計[M].北京:中國鐵道出版社,2002
[4]微軟 .ASP.NET安全應用程序開發[M].北京:清華大學出版社.2003