任毅+虞洋+蔡劍波
【摘 要】提出了一種辦公自動化管理系統(tǒng)的安全性設(shè)計方法,采用了分層結(jié)構(gòu)的設(shè)計理念,從數(shù)據(jù)封裝、日志記錄、數(shù)據(jù)加密等方面加強了安全性設(shè)計。
【Abstract】In this paper, a security design for office automation management system is proposed. The design is hierarchical and will reinforce the security of the system from data encapsulation, log record and data encryption.
【關(guān)鍵詞】自動化;管理系統(tǒng);安全性
【Keywords】automation ;management system; security design
【中圖分類號】G25 【文獻標(biāo)志碼】A 【文章編號】1673-1069(2017)06-0156-02
1 引言
隨著Internet的發(fā)展,很多企業(yè)都用辦公自動化網(wǎng)站逐步取代C/S模式的OA軟件。辦公自動化網(wǎng)站通過收集員工個人信息,發(fā)布工作項目和進展,報表自動生成和導(dǎo)出,工作統(tǒng)計和分析等功能,輔助管理者實現(xiàn)企業(yè)內(nèi)部的辦公自動化管理工作。但是這些系統(tǒng)也隨時可能面臨來自網(wǎng)絡(luò)的攻擊。
WEB攻擊有很多種,一部分可以使用ASP.NET代碼進行防范的,但是其他的攻擊方式還是可以產(chǎn)生破壞的,如直接攻擊服務(wù)器。
辦公自動化網(wǎng)站必須能夠具有極強的安全性,保證企業(yè)內(nèi)部工作的高效和有序。本文以基于ASP.NET的辦公自動化管理系統(tǒng)為例,較為詳細地介紹了網(wǎng)頁的安全性設(shè)計方法,主要包括:①數(shù)據(jù)封裝:采用分層結(jié)構(gòu)設(shè)計網(wǎng)頁,將數(shù)據(jù)封裝在層次內(nèi),保證敏感數(shù)據(jù)不被惡意程序捕獲;②密碼加密:對用戶密碼進行加密處理后再存入數(shù)據(jù)庫,保證數(shù)據(jù)安全,防止意外獲取管理員權(quán)限的用戶直接竊取用戶密碼,減小密碼泄露幾率;③日志記錄:在程序中的重要執(zhí)行位置記錄日志,細化網(wǎng)頁部署后的需記錄信息,便于網(wǎng)頁的維護。
2 ASP.NET特點
當(dāng)前很多管理系統(tǒng)是基于ASP和腳本語言,將動態(tài)網(wǎng)頁和數(shù)據(jù)庫結(jié)合。但是由于ASP本身的局限性使得系統(tǒng)有一些不可克服的缺陷,而采取了ASP.NET技術(shù)的系統(tǒng)性能上有了很大的改善,其主要表現(xiàn)在以下幾方面[1]: ①ASP.NET頁面只需要一次編譯后不需要重新編譯,直到該頁面被修改或Web應(yīng)用程序重新啟動。這使得在多次訪問時速度有了極大的提升。②ASP.NET通過ADO.NET[2]提供的DataGrid等數(shù)據(jù)庫元件可以直接和數(shù)據(jù)庫聯(lián)系。③ASP.NET支持應(yīng)用程序的實時更新。管理員不必關(guān)掉網(wǎng)絡(luò)服務(wù)器或者甚至不用停止應(yīng)用程序的運行就可以更新應(yīng)用文件。應(yīng)用程序文件永遠不會被加鎖,因此甚至在程序運行時文件就可以被覆蓋。當(dāng)文件更新后,系統(tǒng)會溫和地轉(zhuǎn)換到新的版本。④ASP.NET采取"code-behind"方式編寫代碼使得代碼更易于編寫,結(jié)構(gòu)更清晰,降低了系統(tǒng)的開發(fā)與維護的復(fù)雜度和費用。
3 系統(tǒng)概述
3.1功能結(jié)構(gòu)
該辦公自動化管理系統(tǒng)數(shù)據(jù)庫采用Microsoft SQL Server 2005[3]。圖1給出系統(tǒng)的功能結(jié)構(gòu)圖。其工作流程為:通過登錄判斷用戶的權(quán)限、所在組等信息,支持用戶進行錄入、修改、刪除和查詢工作,并將工作以Excel文件的形式導(dǎo)出。本系統(tǒng)還提供了對工作數(shù)據(jù)進行統(tǒng)計分析的功能,可將工作占用時間直觀的畫成餅圖展示給用戶或管理者。通過功能結(jié)構(gòu)圖可以看出,本系統(tǒng)的功能都是基于有效用戶登錄的,因此必須對登錄用戶進行身份驗證,防止黑客侵入。同時必須假想用戶都是惡意的,對用戶的所有輸入進行判斷,提升軟件安全性。
3.2 系統(tǒng)安全性要求
考慮到本系統(tǒng)的應(yīng)用,網(wǎng)頁應(yīng)該考慮如下安全性要求:①拒絕非法用戶登陸;②對用戶的密碼進行妥善保護;③對用戶非法輸入進行辨析和提示;④軟件結(jié)構(gòu)清晰,不易被惡意代碼攻擊;⑤具有系統(tǒng)日志功能,方便維護。
4 系統(tǒng)安全性設(shè)計
4.1分層設(shè)計
為了使程序結(jié)構(gòu)清晰,便于添加功能、修改和維護,系統(tǒng)采用了分層結(jié)構(gòu)的設(shè)計理念。所謂分層結(jié)構(gòu)是指按照實現(xiàn)的不同功能將系統(tǒng)的代碼文件分層,實現(xiàn)相同或相近功能的代碼位于同一層。如果需要對某些特定功能修改,只需在響應(yīng)的層次內(nèi)進行修改即可,使用分層結(jié)構(gòu)編寫代碼使系統(tǒng)的功能結(jié)構(gòu)更加清晰,同時將數(shù)據(jù)封裝在本層內(nèi),不易被惡意代碼攻擊[4]。
本辦公自動化管理系統(tǒng)的主要實現(xiàn)分為四層,分別為數(shù)據(jù)訪問層、數(shù)據(jù)接口層、業(yè)務(wù)邏輯層和界面顯示層。
其中數(shù)據(jù)訪問層完成了所有與數(shù)據(jù)庫交互的工作;數(shù)據(jù)接口層則實現(xiàn)對數(shù)據(jù)訪問層的輔助功能和包裝,例如構(gòu)造SQL語句;業(yè)務(wù)邏輯層整個系統(tǒng)的核心,是系統(tǒng)中各種對象的類的具體實現(xiàn),實現(xiàn)了管理系統(tǒng)的邏輯功能;界面顯示層位于系統(tǒng)的最上層,實現(xiàn)了系統(tǒng)各頁面的顯示。各層次之間相互獨立,只提供數(shù)據(jù)訪問接口,保證了數(shù)據(jù)的安全性。
在編寫代碼時,按照先底層后上層的原則,首先實現(xiàn)數(shù)據(jù)訪問功能,然后編寫邏輯實現(xiàn)需要的各類,最后編寫頁面顯示層。
4.2 數(shù)據(jù)加密設(shè)計
當(dāng)前,由于網(wǎng)絡(luò)上部分的密碼以明文方式顯示,導(dǎo)致大量網(wǎng)民受到隱私泄露的威脅。由于沒有進行密碼加密設(shè)計,可以導(dǎo)致眾多用戶信息泄露,帶來極為惡劣的影響。
本系統(tǒng)采用XOR方式對數(shù)據(jù)進行加密,其原理為:當(dāng)一個二進制數(shù)A和另一個二進制數(shù)B進行異或運算會生成另一個二進制數(shù)C,如果再將C和B進行異或運算,則C又會還原成A。因此只需要確定一串密鑰B,即可將數(shù)據(jù)A轉(zhuǎn)化為加密后的結(jié)果C,并將C存入數(shù)據(jù)庫中。如果需要解密數(shù)據(jù),只需要將C再與密鑰B進行異或運算即可。這里給出加密方法的示例代碼。
Public static string Encrypt(string strSrc, str strKey)
{
Byte[] bSrc = (new UnicodeEncoding()).GetBytes(strSrc);
Byte[] bKey = (new UnicodeEncoding()).GetBytes(strKey);
For (int i=0; i { For (int j=0; j { bSrc[i] = Convert.ToByte(bSrc[i]^bKey[j]); { } Return (new UnicodeEncoding()).GetString(bSrc).TrimEnd(‘\0); } 之所以需要利用字符串的低位字節(jié)進行異或操作,這是因為Unicode編碼的非中文字符(數(shù)字或字母)的高位字節(jié)為0,而某些中文字符與0異或運算后,可能產(chǎn)生SQL Server不能存儲的亂碼字符串,造成存儲失敗。 解密方法是加密方法的逆操作,只需要重新利用加密后和原來的密鑰執(zhí)行相同的疑惑操作即可,因此解密方法直接調(diào)用加密方法即可。 4.3 日志設(shè)計 成熟網(wǎng)頁的一個重要標(biāo)志就是具備優(yōu)良的日志記錄功能。出于安全性和實時性的要求,部署好的網(wǎng)站通常是不允許進行實時調(diào)試的,因此需要將網(wǎng)頁實時運行中的重要信息記錄下來,作為網(wǎng)頁維護的重要依據(jù)。本系統(tǒng)采用了Log4Net控件,該控件可以按照不同等級將重要信息記錄,而且具有調(diào)用簡便的特點。利用這一控件,可以很好的實現(xiàn)網(wǎng)頁運行日志的記錄功能。 5 結(jié)論 基于ASP.NET的辦公自動化管理系統(tǒng)對安全性要求較高,本文從數(shù)據(jù)封裝、數(shù)據(jù)加密、日志記錄等方面敘述了該系統(tǒng)的安全性設(shè)計,通過對網(wǎng)站進行分層設(shè)計,記錄系統(tǒng)運行日志和加密重要數(shù)據(jù)等手段,可以較大的提升系統(tǒng)的安全性,并為其他基于ASP.NET的網(wǎng)頁程序提供了增強安全性的經(jīng)驗。 【參考文獻】 【1】Scott Worley. ASP.NET技術(shù)內(nèi)幕[M].王文龍, 劉湘寧,譯.人民郵電出版社,2002. 【2】Sanjeev Rohilla, Senthil Nathan, Surbhi Malhotra. ADO.NET專業(yè)項目實例開發(fā)[M].陳君, 王寶良,譯.中國水利水電出版社,2003. 【3】劉乃麗.精通ASP.NET2.0+SQL Server 2005項目開發(fā)[M].人民郵電出版社,2007. 【4】德瑞工作室.黑客入侵網(wǎng)絡(luò)攻防修煉[M]. 電子工業(yè)出版社,2008.