數(shù)字電視用戶遠程繳費加密系統(tǒng)設(shè)計

目前,計算機大批量數(shù)據(jù)存儲的安全問題、敏感數(shù)據(jù)的防竊取和防篡改問題越來越引起人們的重視。數(shù)據(jù)庫系統(tǒng)作為計算機信息系統(tǒng)的核心部件,數(shù)據(jù)庫文件作為信息的聚集體,其安全性將
是信息產(chǎn)業(yè)的重中之重。

與傳統(tǒng)的通信加密技術(shù)相比,數(shù)據(jù)庫存儲加密有其自身的特點和要求。數(shù)據(jù)庫存儲加密的主要目的是按照用戶的要求將敏感數(shù)據(jù)加密存儲,防止非法用戶采用其它手段獲取數(shù)據(jù),同時保證合法用戶通過數(shù)據(jù)庫加密系統(tǒng)仍能正常訪問數(shù)據(jù)。因此,數(shù)據(jù)庫存儲加密系統(tǒng)的開發(fā)原則是:強調(diào)安全,保證效率,保持?jǐn)?shù)據(jù)庫特點。

一、整體概述

本系統(tǒng)是把數(shù)據(jù)庫加密與一個基于Web平臺的應(yīng)用系統(tǒng)相結(jié)合,完成對數(shù)字電視用管系統(tǒng)的數(shù)據(jù)庫加密實現(xiàn),使系統(tǒng)的安全性得到提高。

本系統(tǒng)使用JSP技術(shù)編寫業(yè)務(wù)邏輯。JSP技術(shù)的本質(zhì)是JAVA語言,通過這種技術(shù)可以利用JAVA語言的特性實現(xiàn)動態(tài)網(wǎng)頁的功能,從而實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。應(yīng)用服務(wù)器采用Tomcatl解釋和執(zhí)行JSP程序,并傳送給Web服務(wù)器,使得應(yīng)用邏輯能夠在網(wǎng)頁中體現(xiàn)出來。后端使用MySQL作為數(shù)據(jù)庫服務(wù)器。JSP和MySQL之間使用JDBC連接。JDBC是JAVA語言和數(shù)據(jù)庫服務(wù)器之間的標(biāo)準(zhǔn)接口,通過它,JAVA得以操作數(shù)據(jù)庫資源。

本系統(tǒng)的整體功能為:

(1)操作者的權(quán)限層次要有明確的分類,進入系統(tǒng)時要進行身份認(rèn)證;

(2)出于對數(shù)字電視用戶個人隱私的負(fù)責(zé),數(shù)字電視用戶詳細信息只能由數(shù)字電視高級管理人員調(diào)閱,其它任何人包括普通操作人員都無權(quán)查閱。

本系統(tǒng)的系統(tǒng)框架如圖1所示。

數(shù)字電視用戶遠程繳費加密系統(tǒng)設(shè)計

這個系統(tǒng)是根據(jù)Web應(yīng)用的三層服務(wù)結(jié)構(gòu)構(gòu)建起來的,即系統(tǒng)邏輯結(jié)構(gòu)分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層。

表示層收集用戶數(shù)據(jù),通過控件提交自己的數(shù)據(jù),并把用戶想要查詢的數(shù)據(jù)進行展示。主要完成數(shù)據(jù)查詢的轉(zhuǎn)換、加密與解密等任務(wù)。

業(yè)務(wù)邏輯層用Java Servlet實現(xiàn),主要完成包括數(shù)據(jù)庫的連接、對數(shù)據(jù)的操作,接受客戶端的請求、執(zhí)行密文查詢、把結(jié)果返回給用戶端等,該層還屏蔽了數(shù)據(jù)庫的訪問方式及路徑,在一定程度上阻止了對數(shù)據(jù)庫的攻擊。

數(shù)據(jù)服務(wù)層是數(shù)據(jù)庫服務(wù)器,主要由一個數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn),采用MySQL數(shù)據(jù)庫,它通過中間層來連接用戶操作。

用戶通過瀏覽器向服務(wù)器發(fā)送請求,Web服務(wù)器對需要訪問數(shù)據(jù)庫的請求交中間件處理,對需要加密的數(shù)據(jù)由加,解密模塊處理。

用戶查詢加密數(shù)據(jù)庫,系統(tǒng)的處理流程過程如下:

(1)瀏覽器的用戶程序發(fā)出連接數(shù)據(jù)庫請求,即用戶登錄數(shù)據(jù)庫。

(2)系統(tǒng)根據(jù)身份認(rèn)證機制判斷用戶身份。

(3)用戶通過用戶界面向數(shù)據(jù)庫加密后的系統(tǒng)提供用戶密鑰及訪問請求。

(4)系統(tǒng)根據(jù)訪問權(quán)限判斷是否響應(yīng)用戶的請求。

(5)查詢加密配置文件,判斷加密類型、加密粒度、采用的加密算法和加密密鑰。

(6)數(shù)據(jù)庫加密,解密引擎把用戶請求轉(zhuǎn)化為原數(shù)據(jù)庫系統(tǒng)可以操作的請求向原數(shù)據(jù)庫提交查詢請求。

(7)原數(shù)據(jù)庫系統(tǒng)返回與用戶安全等級相對應(yīng)的密文數(shù)據(jù)給密文管理系統(tǒng)。

(8)密文管理系統(tǒng)查詢加密字典、對比安全等級標(biāo)志,在授權(quán)訪問的情況下,獲得密鑰,將密文數(shù)據(jù)解密為明文數(shù)據(jù)返回給用戶。

(9)用戶程序完成數(shù)據(jù)庫訪問,請求斷開連接。

(10)服務(wù)器接到請求,兩通信模塊斷開連接。

二、用戶管理模塊的設(shè)計與實現(xiàn)

1、用戶管理模塊的設(shè)計

表示層包含一個對允許使用應(yīng)用系統(tǒng)的用戶及其可以執(zhí)行的功能進行控制的管理功能模塊,簡稱為用戶管理模塊,負(fù)責(zé)檢查每一個請求服務(wù)的用戶的身份。對于那些非法的或被拒絕提供服務(wù)的用戶請求,用戶管理模塊將他們阻擋在網(wǎng)絡(luò)應(yīng)用系統(tǒng)之外;對于那些合法的用戶請求,用戶管理模塊能夠根據(jù)用戶請求的類型和用戶合法身份的級別,限制和管理這些合法用戶在網(wǎng)絡(luò)應(yīng)用系統(tǒng)中使用的功能和能得到的服務(wù)種類。用戶管理模塊需要實現(xiàn)下述的兩個功能。

(1)實現(xiàn)用戶的身份校驗功能

身份,是指包括認(rèn)證和用戶授權(quán)的安全體系結(jié)構(gòu)要素。認(rèn)證適用于那些使用特定的憑證來標(biāo)識自己的用戶,例如用戶名和口令。授權(quán)是指對順利地被標(biāo)識了身份的個人的繼續(xù)訪問權(quán)利的特 征,通過授權(quán)工作,可以控制用戶的操作,設(shè)定用戶可以做和不可以做的一些事情。用戶身份校驗是驗證用戶合法性的重要功能。只有被確認(rèn)是合法用戶之后,應(yīng)用系統(tǒng)使用者才有可能執(zhí)行其要求的功能,得到其要求的服務(wù)。

(2)實現(xiàn)用戶的級別管理

在所有可以使用應(yīng)用系統(tǒng)功能的用戶中,不同級別的用戶可以使用的功能是不同的。

2、用戶管理模塊的實現(xiàn)

用戶管理模塊中的身份認(rèn)證模塊是整個系統(tǒng)的人口模塊,其功能是確認(rèn)操作用戶的身份及權(quán)限,身份認(rèn)證模塊的流程設(shè)計如圖2所示。

數(shù)字電視用戶遠程繳費加密系統(tǒng)設(shè)計

用戶管理模塊中的身份認(rèn)證及權(quán)限認(rèn)證是基于數(shù)據(jù)庫加密模型中的角色管理:首先定義用戶角色,然后由系統(tǒng)管理員創(chuàng)建及刪除用戶角色,對用戶角色授權(quán),并進行安全級別與安全范圍的標(biāo)記;其次創(chuàng)建數(shù)據(jù)庫用戶,由系統(tǒng)管理員通過操作前端系統(tǒng)界面,由程序調(diào)用DBMS的命令把用戶角色授予數(shù)據(jù)庫用戶,并將數(shù)據(jù)庫用戶實際連接到數(shù)據(jù)庫上設(shè)置的登錄用戶。系統(tǒng)登錄用戶要由系統(tǒng)安全管理員進行安全級別與安全范圍的櫪記,登錄用戶與角色之間的授權(quán)必須滿足強制訪問控制的要求;最后創(chuàng)建操作用戶,這部分的功能主要是建立操作用戶同數(shù)據(jù)庫用戶的映射,系統(tǒng)根據(jù)數(shù)據(jù)庫用戶來確定操作用戶的訪問權(quán)限。這樣可以確保操作用戶不能用自己的帳號和密碼繞過系統(tǒng)直接訪問數(shù)據(jù)庫系統(tǒng),增強了系統(tǒng)安全性,同時用消息摘要保存口令。

(1)口令驗證

系統(tǒng)經(jīng)常需要驗證用戶輸入的口令是否正確,如果將正確的用戶口令直接保存在數(shù)據(jù)庫中,則很容易被黑客竊取到,因此只可以保存口令的消息摘要。

系統(tǒng)登陸后,根據(jù)用戶輸入口令計算消息摘要,根據(jù)用戶輸入的帳號在數(shù)據(jù)庫中找到預(yù)先保存的正確的口令摘要,比較兩個消息摘要是否相等,若不相等則說明輸入的口令不正確口令不正確。

(2)角色劃分

角色劃分的制度是基于角色的安全管理系統(tǒng)實施安全策略的一個關(guān)鍵問題。粒度過大,將會影響數(shù)據(jù)和數(shù)據(jù)庫系統(tǒng)的安全性,不易實測最小特權(quán)原則;粒度過小,角色數(shù)量的增加,提高了角色管理的復(fù)雜性。本系統(tǒng)根據(jù)每個崗位定義一個角色,角色關(guān)系在數(shù)據(jù)庫中的存儲如表1的設(shè)計,系統(tǒng)涉及的角色有以下4種。

數(shù)字電視用戶遠程繳費加密系統(tǒng)設(shè)計

①匿名角色

級別最低,不存在身份驗證,只能用于瀏覽,不能進行任何操作。

②用戶角色

級別低,不能獲取級別高或同級別的信息??陕?lián)機注冊成為用戶,設(shè)定自己的登陸名及密碼;可按用戶姓名、地址自定義查詢;可基于查詢結(jié)果進行繳費,若查詢電視卡仍有余額,則不用繳費,若無余額則可以繳費,繳費結(jié)果返回給用戶;可對已經(jīng)進行的繳費情況查看或撤銷;繳費成功后可查詢開通的電視節(jié)目信息和電視卡余額。

③操作員角色

權(quán)限級別由管理員設(shè)定,可查詢比其級別低的信息。可查看用戶的繳費情況、可查詢用戶基本信息、可創(chuàng)建新用戶、可對用戶基本信息進行修改。

④管理員角色

級別最高,負(fù)責(zé)對系統(tǒng)和數(shù)據(jù)的訪問,存取的權(quán)限,分別賦予操作員和用戶不同的權(quán)限級別,并可隨時根據(jù)系統(tǒng)的要求或變化對角色的存取權(quán)限進行管理,包括對可傳遞性的限制。只有授權(quán)的用戶能夠?qū)ο到y(tǒng)進行訪問,防止沒有權(quán)限的人員或進程登錄進入系統(tǒng)。

根據(jù)角色分配相應(yīng)的訪問權(quán)限,最后將角色授予用戶,建立用戶和角色的映射關(guān)系,系統(tǒng)用戶關(guān)系表設(shè)計如表2所示。

數(shù)字電視用戶遠程繳費加密系統(tǒng)設(shè)計

主鍵約束:pk_hosID

唯一索引:hosName(登錄時用戶名)

此表在關(guān)系到不同角色時會有不同,這里不再一一敘述。

這樣設(shè)計不僅保證了數(shù)據(jù)庫的安全性,簡化了授權(quán)操作,還降低了權(quán)限管理的負(fù)擔(dān),減少系統(tǒng)的安全漏洞。同時根據(jù)RBAC存取的安全原則,對角色制定了約束規(guī)則。

規(guī)則1:在一次會話過程中,用戶能且須激活所擁有的角色集中的某一種角色。

規(guī)則2:任何一個用戶不能同時擁有同一個機構(gòu)中的兩個角色。

在系統(tǒng)設(shè)計中,通過引入角色約束規(guī)則,在為用戶分配角色時,以及用戶激活角色集開始一次會話時。系統(tǒng)根據(jù)角色的各種約束原則實施角色約束規(guī)則,實現(xiàn)本系統(tǒng)的安全訪問。在本模塊
中,確認(rèn)用戶身份中實現(xiàn)規(guī)則1,確認(rèn)用戶權(quán)限中實現(xiàn)了規(guī)則2和規(guī)則3。

3、數(shù)據(jù)服務(wù)層的設(shè)計與實現(xiàn)

這里的數(shù)據(jù)服務(wù)層所采用的數(shù)據(jù)庫是MySQL,該數(shù)據(jù)庫不但存儲有敏感數(shù)據(jù)的密文和供查詢的關(guān)鍵字的索引,而且還有恢復(fù)密文的相關(guān)信息,包括采用的解密算法和密鑰信息等。使用數(shù)據(jù)庫之前首先需要建立數(shù)據(jù)庫,所有的密文信息存儲在數(shù)據(jù)庫hospital中。

(1)敏感數(shù)據(jù)加密保護

數(shù)字電視用管系統(tǒng)不同于其他數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)的保密性非常重要,盡管已經(jīng)在系統(tǒng)功能上為不同的用戶規(guī)定了不同的訪問權(quán)限,但是對于最高權(quán)限擁有者如數(shù)據(jù)庫管理員(DBA)。訪問控制策略不能阻擋其對數(shù)據(jù)的知曉權(quán)。但就是DBA也不應(yīng)該知道用戶的銀行賬戶信息,這就需要有進一步的安全措施一數(shù)據(jù)庫加密技術(shù);由于系統(tǒng)在Web上運行,免不了遠程的數(shù)據(jù)交換,為防止傳輸過程中數(shù)據(jù)被截取,也應(yīng)該采取數(shù)據(jù)加密技術(shù)。綜上所述,在數(shù)字電視用管系統(tǒng)中對一些敏感數(shù)據(jù)采用一定的加密手段是非常必要的。

在設(shè)計系統(tǒng)加密實現(xiàn)時,首先要確定哪些數(shù)據(jù)需要加密以及哪些數(shù)據(jù)應(yīng)該采用明文,采用風(fēng)險分析步驟來進行決策。在風(fēng)險分析中,需要根據(jù)不同的敏感程度來對數(shù)據(jù)進行分類。在考慮到數(shù)據(jù)加密的特殊性、數(shù)據(jù)加密與解密是比較費時的操作、數(shù)據(jù)加密與解密程序會占用大量的系統(tǒng)資源的情況下,本文采用的是對風(fēng)險最大的數(shù)據(jù)進行加密:所有關(guān)于用戶id和password的信息必須加密,所有關(guān)于用戶賬號相關(guān)的信息必須加密。

(2)密鑰存儲模塊

服務(wù)器端加密算法的密鑰存儲是很重要的,特別在Web平臺,給密鑰的存儲帶來了更大的隱患。

本設(shè)計對密鑰庫使用了兩套口令:一是密鑰庫口令,二是用戶口令。

首先,使用密鑰庫口令對整個密鑰庫文件進行加密。訪問密鑰庫之前,必須使用密鑰庫口令來打開密鑰庫。它對密鑰庫中的密鑰實施了外部保護,保證非系統(tǒng)用戶不能訪問密鑰庫中的任何信息。

其次,每個用戶都設(shè)置一個口令,使用該口令加密對應(yīng)密鑰項。用戶口令對密鑰實施了內(nèi)部保護。它確保了只有擁有用戶口令的用戶才可以訪問和管理該密鑰項。用戶在密鑰庫中只能管理自己的密鑰,無權(quán)操縱其他實體的密鑰。并且用戶口令提高了對密鑰的保密強度,即使密鑰庫口令被破解或泄漏,也不會殃及其中的密鑰項。表3是對在數(shù)據(jù)庫中存儲的密鑰關(guān)系表的設(shè)計。

4、業(yè)務(wù)邏輯層的設(shè)計與實現(xiàn)

作為表示層和數(shù)據(jù)服務(wù)層橋梁的業(yè)務(wù)服務(wù)層可有多個SeMet實現(xiàn)。java SeN-let接受客戶端的請求、按照用戶的請求執(zhí)行密文查詢,然后把結(jié)果返回給用戶。

(1)數(shù)據(jù)庫連接模塊

此模塊主要任務(wù)是和數(shù)據(jù)庫進行連接,并讀取和存入數(shù)據(jù),系統(tǒng)程序采用JDBC-ODBC與數(shù)據(jù)庫建立連接,將用戶數(shù)據(jù)請求轉(zhuǎn)換為相應(yīng)的SQL語句,對數(shù)據(jù)庫進行查詢、添加、刪除和修改等操作。

①請求連接

由于Connection是一個非常耗資源的對象,因此在這里使用了單例模式(Sin-gleton Design Patton)來設(shè)計DBConnec-tion類,保證了整個生命周期內(nèi)只存在一個ConnecOon對象,該對象可以被其他類重復(fù)利用,這樣可以大大節(jié)省系統(tǒng)資源。

②向數(shù)據(jù)庫發(fā)送SQL語句

連接上數(shù)據(jù)庫后,下一步就是對數(shù)據(jù)庫進行具體操作,如查詢、修改、刪除等。在這一過程中主要使用了Statement類。Statement是通過活動鏈接發(fā)送SQL語句到數(shù)據(jù)庫并返回結(jié)果的對象。

③處理由SQL操作返回的結(jié)果集

經(jīng)過DBMS處理,SQL操作返回的結(jié)果將以特定的形式顯示給用戶,ResultSet用來管理輸出的格式,使用ResultSet的next()方法“周游”它的行;在當(dāng)前行中,調(diào)用getXXX()方法就可以獲取單個列的值,這里的×××代表要返回的java數(shù)據(jù)類型。

(2)密鑰加密模塊

密鑰加密模塊主要實現(xiàn)對IDEA密鑰的加密,以保證傳輸過程的安全。如上所述,本文采用的是基于大質(zhì)數(shù)分解的公鑰體制。其主要處理流程為:首先產(chǎn)生兩個大素數(shù)構(gòu)造出一對公鑰和私鑰;然后利用公鑰,對IDEA算法的密鑰進行加密。

5、數(shù)據(jù)加密模塊流程

用戶對數(shù)據(jù)進行增、刪、改等操作時,涉及到明文數(shù)據(jù)到密文數(shù)據(jù)的轉(zhuǎn)換,需要數(shù)據(jù)加密模塊。數(shù)據(jù)加密模塊通過在數(shù)據(jù)操作過程中隱藏的數(shù)據(jù)窗口來實現(xiàn),用戶對明文數(shù)據(jù)窗口的操作同步映射到隱藏的密文數(shù)據(jù)窗口中,對明文數(shù)據(jù)的保存操作同步映射密文數(shù)據(jù)窗口的保存操作。

數(shù)據(jù)加密模塊的流程如下:

輸入:明文信息。

輸出:加密數(shù)據(jù)庫中的密文信息。

(1)在用戶將明文信息調(diào)入數(shù)據(jù)窗口后,利用主鍵將相應(yīng)的密文數(shù)據(jù)的相應(yīng)字段調(diào)入隱藏的密文數(shù)據(jù)窗口;

(2) lf用戶執(zhí)行增加操作Then;

(3)相應(yīng)在隱藏的密文數(shù)據(jù)窗口中增加;

(4)對用戶錄入的新增加的數(shù)據(jù)用加密函數(shù)加密后寫入密文數(shù)據(jù)窗口;

(5) Else;

(6)將用戶對明文數(shù)據(jù)窗口中的某一行、某一列數(shù)據(jù)修改后的數(shù)據(jù)加密后寫入密文數(shù)據(jù)窗口;

(7) End if;

(8)在明文數(shù)據(jù)窗口Update后,密文數(shù)據(jù)窗口同時執(zhí)行Update操作。

其中使用算法加密數(shù)據(jù)的步驟為:

(1)生成一個包含要加密數(shù)據(jù)的字節(jié)數(shù)組;

(2)調(diào)用Cipher.getlnstance建立一個Cipher實例;

(3)通過調(diào)用init方法并傳遞密鑰,在加密模式下初始化這個Cipher;

(4)調(diào)用doFinal方法,傳遞表示要加密數(shù)據(jù)的字節(jié)數(shù)組。

由于存儲在數(shù)據(jù)庫中的數(shù)據(jù)經(jīng)過加密,在向數(shù)據(jù)庫提交時采用的是字符串形式,在加密數(shù)據(jù)中出現(xiàn)的字符串隨機,所以出現(xiàn)了一些預(yù)料不到的問題。例如:如果在密文字串中如果出現(xiàn)了‘/0’、 ‘/,’、或者‘)’,那么系統(tǒng)認(rèn)為此字符串已經(jīng)結(jié)束導(dǎo)致數(shù)據(jù)處理出錯,甚至可能認(rèn)為此語句結(jié)束而報錯。

針對這點,提出解決方法:將密文數(shù)據(jù)重新進行編碼,使之杜絕以上三種符號的出現(xiàn)。在解密時再進行反編碼恢復(fù)出數(shù)據(jù)的本來面目6我們采用的是Base64編碼過程,該過程將一個3個8位字符映射到4個6位字符中?;旧希鼘⒚苛挥成錇橐粋€八位的ASClI字符(稱它為Base64.是因為6個位能表示從0到63的數(shù),為64個可能的值),這樣就可以將二進制數(shù)以合適的方式寫入到數(shù)據(jù)庫中。同時,由于Base64編碼中出現(xiàn)了‘/0’,因此在我們的系統(tǒng)中采用的Base64編碼進行了改造,改為用Oxff代替。同時,由于在Javascript中所有字符都采用16位編碼(UTF-16)。因此本文將3個16位字符映射到8個16位字符中o這樣,問題得到了很好的解決。

6、軟件測試問題

軟件測試是保證軟件質(zhì)量的關(guān)鍵,是對需求分析、設(shè)計和軟件編碼的最后復(fù)審。針對本系統(tǒng)是否正確的保護了敏感數(shù)據(jù),我們進行了一系列的端到端測試。

本系統(tǒng)采用先注冊,后登陸的方式。因此采用端到端測試來測試登錄過程本身。必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而
直接瀏覽某個頁面等。

采用用戶名和密碼聯(lián)合認(rèn)證機制控制用戶的訪問權(quán)限,從而保證系統(tǒng)敏感數(shù)據(jù)的安全性。由于系統(tǒng)處于安全防護的中心位置,一旦用戶的口令被非法獲得,則攻擊者就獲得了該用戶的全部權(quán)
限,如果泄露密碼的是高權(quán)限用戶,那么主機和網(wǎng)絡(luò)就失去了安全性。

用戶口令的測試中,口令應(yīng)該為混合數(shù)字、大寫字母、以及小寫字母或標(biāo)點,避免共享管理員口令,使用用戶組或其他方式代替。需檢測口令是否用加密方式保存,加密強度應(yīng)該足夠使一個
強大的工作站運算一周才能破解。本系統(tǒng)采用用戶第一次登陸時,強迫用戶該變口令,口令生存周期規(guī)定為最長6個月,最短1個月。同時在口令歷史中最近使用過的5個口令不應(yīng)該再被使用。

一個用戶想在沒有登陸的條件下訪問網(wǎng)頁,應(yīng)用程序?qū)⑵仁刮覀兇_認(rèn)他們的身份,getRemoteUser方法返回經(jīng)過客戶端驗證的用戶名。同時在應(yīng)用的Web部署描述文件中配置安全性。否則會返回"Authorization Failed"。

用戶登錄測試:

假如一個帳戶在短時間內(nèi)出現(xiàn)連續(xù)多次的登陸失敗記錄(例如在一個小時內(nèi)20次登陸失?。⒖套枞搸?,并通知用戶,但對于系統(tǒng)管理員帳戶不能做同樣處理,否則將可能被攻擊者利
用造成一次拒絕服務(wù)攻擊;

測試系統(tǒng)是否有超時的限制,用戶登陸后在一定時間內(nèi)(例如15分鐘)沒有點擊任何頁面.是否需要重新登陸才能正常使用;

當(dāng)一個用戶被解聘,他的帳戶應(yīng)該立刻被注銷。

在確定頁面要求請求為登陸用戶后,我們就需要限制那些扮演管理角色的用戶的訪問權(quán)限。lsUserlnRole向container的安全機制訪問一個特定的用戶是否在—個給定的安全角色中,如果角色超出權(quán)限部分,則返回"forbidden”。如果getRemo-teUser返回null值(這意味著沒有用戶被驗證),那么lsUserlnRole就總會返回talse,getUserPrinciple總會返回一個null。這就意味著我們需要重新進入登陸頁面。

7、安全性總結(jié)

本系統(tǒng)的設(shè)計目標(biāo)為:在目前的計算能力下,破譯所要花費的如時間和工作量等成本非常昂貴,已經(jīng)遠遠超過秘密本身的價值;或者依據(jù)現(xiàn)實的技術(shù)條件,還沒有找到破譯的方法,滿足安全性要求。

(1)數(shù)據(jù)庫的安全

數(shù)據(jù)庫的安全要求是:一,不同的數(shù)據(jù)庫必須由具有相應(yīng)權(quán)限的人進行相應(yīng)的操作;二,數(shù)據(jù)庫不會擴散;三,數(shù)據(jù)庫不會被破壞。

對于第一點,本系統(tǒng)會采用具有安全保障功能的數(shù)據(jù)庫,并且對必要的字段進行變換后的存儲處理;對第二點,主要由環(huán)境安全性來保障;對第三點,主要對數(shù)據(jù)庫進行冗余等保護處理。

(2)算法的安全性

系統(tǒng)采用當(dāng)前成熟的IDEA、RSA和SHA-256散列算法作為核心算法,具有很高的加密強度。保證在用戶不知道密鑰的情況下,使用本系統(tǒng)保護的內(nèi)容短期內(nèi)是不可能被破解的。由于密鑰是在服務(wù)器端隨機產(chǎn)生并存放在數(shù)據(jù)庫中的,并由用戶口令保護。只要保證服務(wù)器端內(nèi)部的環(huán)境安全性,就可以同時保障密鑰的安全性,保證在本系統(tǒng)中不會造成密鑰的泄露。

(3)體系的安全性

密鑰在任何情況下不作明文存儲(包括在數(shù)據(jù)庫內(nèi))、密鑰在任何情況下不作明文傳輸(主要指在網(wǎng)絡(luò)上)、對密鑰進行變換的算法具有最高級的加密強度并永不公布、在密鑰意外泄露時可以通過更改密鑰及更改用戶登錄權(quán)限等簡單手段迅速處理,并且不會影響其它密鑰的安全性。

(4)環(huán)境的安全性

主要由服務(wù)器端內(nèi)部保障。包括內(nèi)部人員的安全、內(nèi)部設(shè)備的安全、內(nèi)部運行機制的安全等。

小知識之Statement

Statement是 Java 執(zhí)行數(shù)據(jù)庫操作的一個重要方法,用于在已經(jīng)建立數(shù)據(jù)庫連接的基礎(chǔ)上,向數(shù)據(jù)庫發(fā)送要執(zhí)行的SQL語句。Statement對象,用于執(zhí)行不帶參數(shù)的簡單SQL語句。