曾凡鋒 孫亮
摘 要 隨著計算機技術的發展,越來越多的高校采用在線考試的方式。同時,在線考試系統的安全性,就愈加的重要。本文主要對在線考試系統的安全性進行了闡述,對該系統的安全性和可靠性進行了論證。希望在深入地探討和交流中,系統能夠得到進一步改進和完善,功能得到提升。
【關鍵詞】安全 在線考試 身份認證 數據庫
隨著信息化和網絡化在高校的迅速發展,也隨著高校IT基礎建設的不斷加強,無紙化考試成為一種最新趨勢,逐步代替傳統的紙質化考試。由于Web自身存在的安全性問題,以及web系統開發人員對安全問題的疏忽,導致系統極易受到黑客的攻擊或被黑客篡改了數據,導致系統崩潰或其他問題。本文就基于Web系統安全機制方面的問題進行了分析,Web系統的安全性除了受Web應用程序設計的影響,還包括運行Web應用程序的操作系統及數據庫等因素的影響。
1 訪問控制
在線考試系統的數據庫服務器采用Mysql,后臺包含了與考試相關的各種數據,包括用戶信息、試題信息、組卷方案信息、成績信息等。除了采用Mysql與Windows 相結合的方式登錄數據庫服務器來實現安全性的身份驗證方式以外,還根據不同用戶權限的設定和劃分,避免使得用戶在使用時獲取到身份不相符權限,或者頁面缺少身份驗證,用戶不經身份驗證就打開相應的頁面等問題。不同類別用戶的功能確定不同的操作對象和操作級別,從源頭保證數據操作的安全。通過建立角色,將訪問許可集中授予角色,之后將需要擁有這一許可的用戶加到角色中,這些用戶即繼承角色的訪問許可。需要撤銷用戶的訪問許可時,將用戶從角色中刪除即可。
本系統中,有三種用戶角色,分別為管理員、教師、學生,其有各自權限:
(1)管理員權限:可以對教師、學生、試題信息進行增刪改查。
(2)教師權限:組卷管理,查看學生信息(包括每個學生的試卷信息)。
(3)學生權限:考試,查詢成績。
2 程序設計問題漏洞
不管Web程序設計基于哪種語言或腳本,因使用語言或腳本本身就有部分缺陷導致產生安全漏洞,比如對特殊字符的判斷或者會話管理漏洞等。例如在php中的“cookie會話”漏洞,入侵者自己在URL中創造一個假的會話標識(ID),并將其提交給服務器,服務器被欺騙以為會話是合法的,會創建一個會話。這個漏洞使得攻擊者可以竊取會話并裝扮成一個合法用戶自由訪問程序。
我們需要對特殊字符進行轉義,代碼如下:
if (!function_exists('func_safe')) {
function func_safe($data, $ignore_magic_quotes = false) {
if (is_string($data)) {
$data = trim(htmlspecialchars($data)); //防止被掛馬,跨站攻擊
if (($ignore_magic_quotes == true) || (!get_magic_quotes_gpc())) {
$data = addslashes($data); //防止sql注入
}
return $data;
} else if (is_array($data)) //如果是數組采用遞歸過濾
{
foreach ($data as $key => $value) {
$data[$key] = func_safe($value);
}
return $data;
} else {
return $data;
}
}
}
3 腳本語言等惡意代碼的防范
惡意代碼不同于網絡病毒,雖然它的破壞力和對系統造成的損害沒有病毒和木馬程序那么大,但對系統的穩定運行而言依然是必須根除的隱患。網絡考試平臺系統特別要注意防范這一類的安全性問題,所以相關的系統安全設置是必須的,有一類安全漏洞對于系統管理員來講是很常見的,那就是系統中的復制功能。客戶端的用戶可以通過鼠標的右鍵來查看相關頁面的屬性,從而獲取系統的部分源代碼,這對于服務器的安全穩定是非常有害的,所以必須通過相關手段禁止使用鼠標右鍵。
采用JavaScript腳本語言來取消右鍵、中鍵功能并通過偽靜態技術隱藏源代碼的示例如下:
function whichButton(e){
var ev = window.event || e;
var code = ev.keyCode || ev.which;
var btnNum = ev.button;
if (btnNum==2){
alert("禁止鼠標右鍵!");
ev.preventDefault();
ev.returnValue = false;
} else if(btnNum==1){
alert("禁止鼠標中鍵!");
ev.preventDefault();
ev.returnValue = false;
}
}
4 通信的安全性
為保證試卷等數據在傳輸過程中的安全,確保私有性和保密性,不會被可能使用網絡監控軟件的竊聽者查看到,系統采用SSL加密傳輸。SSL是一個用來保證文件安全傳輸的協議,可以在服務器和客戶機之間建立一條安全通道,從而實現在Internet中傳輸保密數據。在TCP協議族中,SSL位于TCP層之上、應用層之下。這使它可以獨立于應用層,從而使應用層協議(諸如http)可以直接建立在SSL上。SSL協議由SSL記錄協議和SSL握手協議兩部分組成:SSL記錄協議建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持;SSL握手協議建立在SSL記錄協議之上,用于在實際的數據傳輸開始前通信雙方進行身份認證(協商加密算法、交換加密密鑰等)。
5 結束語
保證系統的安全穩定運行是一切工作的基礎。由于網絡本身的原因,給在線考試的安全和管理帶來了潛在的威脅。本文針對在線考試系統數據安全性要求較高的特點,在系統中采用了多層次的安全技術,并以案例驗證了策略方法的可行性和有效性。
參考文獻
[1]馬玉芳.淺析Web服務器安全策略[J].信息安全與技術,2014(6).
[2]王重英,李艷,盧瓊.基于Web架構模式的安全性能分析與研究[J].信息技術,2014(9).
[3]譚前進,趙前程.Web系統安全威脅研究[J].洛陽師范學院學報,2014(2).
作者簡介
曾凡鋒,現為北方工業大學計算機學院副教授。研究方向為信息安全。
作者單位
北方工業大學計算機學院 北京市 100144