摘 要:網絡考試系統在給我們帶來準確和快捷的同時,也存在一定的安全隱患。本文針對基于ASP的護士執業資格網絡模擬考試系統,通過用戶身份驗證、MD5加密、防止SQL注入攻擊、屏蔽鼠標右鍵等手段進行系統安全性設計。
關鍵詞:ASP 網絡考試系統 護士執業資格 安全性
中圖分類號:G712文獻標識碼:A文章編號:1674-098X(2012)03(a)-0043-01
考試是學校教學過程中的一個必要的評價環節,隨著計算機技術和網絡通訊技術的不斷進步,網絡化考試逐漸成為一種重要的考試方式。網絡考試系統能夠充分發揮題庫的作用,使教師可以均衡、全面、及時地組織試卷、統計成績、分析考試結果,具有準確性、及時性、公正性、靈活性和方便性等特點。
由于網絡考試系統的特殊性,數據的安全與保密就顯得特別重要。保密性是指用戶在網絡上的所有信息應有一定的保密度,不同的用戶類型之間的內容是相互保密的。安全性是指用戶參加的每一次活動都是一個安全的過程,服務器能夠跟蹤所有用戶的動作。為了確保系統的安全性和保密性,主要通過下列五種途徑予以實現[1]:
1 用戶身份驗證
凡進入護士執業資格網絡模擬考試系統的用戶,都要通過身份驗證。而且根據用戶身份的不同,分別進入不同界面,具有不同的操作權限。系統支持按權限進行操作,以確保數據的公共性和私有性。不允許用戶執行非法操作,防止用戶對系統有意或無意的破壞,對一些比較重要的數據,系統設置為只有更高權限的人員才可讀取或操作,系統安全保密性較高。同時,為了有效防止某些特定注冊用戶用程序暴力破解方式進行不斷的登錄嘗試,系統還在登陸界面中加入了驗證碼。
2 MD5加密
MD5的全稱是Message-Digest Algorithm 5,在20世紀90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。它的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式。[2]
系統采用MD5加密技術對用戶密碼進行加密,用戶登錄的時候,程序把用戶輸入的密碼計算成MD5值,然后再去和數據庫中保存的MD5值的密碼進行比較,而程序本身并不“知道”用戶的密碼是什么。
3 防止SQL注入攻擊
所謂SQL注入攻擊,是指利用提交特殊地址將ASP中引用的正常SQL語句和入侵者所需要的SQL語句一并執行,使入侵者達到繞過密碼驗證入侵系統的目的。
防范SQL注入攻擊的方法是禁止提交特殊字符(如or、and、“、”等)。ASP的傳輸數據分為Get和Post兩種,Get是通過將數據添加到URL后提交的方式,而Post是利用郵寄信息數據字段將數據傳送到服務器。[3]
IIS是以字符串的形式將Get請求傳給ASP.dll的,在將數據傳遞給Request.QueryString之后,ASP解析器會解析出Request.QueryString的信息,然后根據“”來分出各個數組內的數據。所以,只要過濾掉特定的字符就可阻止注入攻擊,防止Get方式注入的代碼如下:
<% dim sql_leach,sql_leach_0,Sql_DATA
sql_leach = \"',and,exec,insert,select,delete,update,count,*,%,chr,mid,master,truncate,char,declare\"
sql_leach_0 = split(sql_leach,\",\")
if Request.QueryString<>\"\" Then
for each SQL_Get In Request.QueryString
for SQL_Data=0 To Ubound(sql_leach_0)
ef instr(Request.QueryString(SQL_Get),sql_leach_0(Sql_DATA))>0 Then
response.write \"請不要進行SQL注入!\"
response.end
end if
next
next
end If %>
接著過濾Post提交方式的注入,因為request.form也是以數組形式存在的,所以只要對它再進行一次循環判斷就可以了。防止以Post方式注入的ASP代碼如下:
<% if Request.Form<>\"\" then
for Each Sql_Post in Request.Form
for SQL_Data=0 to Ubound(sql_leach_0)
if instr(Request.Form(Sql_Post),sql_leach_0(Sql_DATA))>0 Then
response.write \"請不要進行SQL注入!\"
response.end
end if
next
next
end if %>
這樣,兩種注入都被禁止了。
4 屏蔽鼠標右鍵
為了避免右鍵菜單的部分操作對考試界面安全性和保密性的影響,護士執業資格網絡模擬考試系統通過在ASP中應用JavaScript語言來對鼠標右鍵進行屏蔽。其代碼如下:
function click() {
if (event.button==2) {
alert('考試期間,請不要使用右鍵!')
}
}
document.onmousedown=click
5 防止用戶刷新頁面
在考試過程中,由于有考試時間限制,為了防止用戶利用刷新網頁的方法刷新考試時間,從而造成考試的不合理性,系統在設計過程中著重設計了防止用戶刷新的操作。在ASP網頁中,此功能是用以下代碼實現的:
response.expires=0
response.addHeader(\"pragma\",\"no-cache\")
response.addHeader(\"Cache-Control\",\"no-cache, must-revalidate\")
參考文獻
[1]王萍萍,李曉娜,孫更新.ASP+Dreamweaver動態網站開發[M].北京:清華大學出版社.2008.
[2]劉清懷,龐婭娟.ASP網絡開發實例自學手冊[M].北京:人民郵電出版社.2008.
[3]張華.精通ASP疑難解析與技巧300例[M].北京:北京鐵道出版社.2007.