張繼紅 陳小全
摘要:本文提出在Web開發(fā)課程的“入侵與防范”教學(xué)過程中,采用橫向聯(lián)系和縱向深入教學(xué)方法、啟發(fā)式教學(xué)方法,培養(yǎng)學(xué)生動(dòng)手能力,鼓勵(lì)學(xué)生創(chuàng)新,使學(xué)生學(xué)習(xí)的積極主動(dòng)性得到發(fā)揮;通過“任務(wù)驅(qū)動(dòng)式”和分層架構(gòu)教學(xué)方法,使學(xué)生盡快掌握所學(xué)知識(shí),注重培養(yǎng)學(xué)生動(dòng)手能力,取得了較好的教學(xué)效果。
關(guān)鍵詞:攻擊;防范;教學(xué)方法
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
Internet的開放性使得Web系統(tǒng)面臨入侵攻擊的威脅,Web開發(fā)課程中需要講解如何建立一個(gè)安全的Web系統(tǒng)?Web程序被安裝在一臺(tái)或多臺(tái)(分布式)Web服務(wù)器上,一旦安裝成功,就等于在為廣大用戶提供服務(wù)的同時(shí),給入侵者打開了一條或N條新的通路。除了服務(wù)器管理員對(duì)安全進(jìn)行配置和漏洞掃描外,Web程序在開發(fā)過程中也需要考慮入侵攻擊與防范。道高一尺,魔高一丈,安全漏洞是不斷發(fā)展的,有新的應(yīng)用出來(lái),就會(huì)出現(xiàn)新的漏洞。絕大多數(shù)公司部署了防火墻,防火墻的職責(zé)是保護(hù)“大門”,但是攻擊者如果從別的途徑進(jìn)入,防火墻也很難處理。所以,Web應(yīng)用攻擊就是黑客開始尋找新的攻擊方法中的一種。Web應(yīng)用攻擊之所以與其他攻擊不同,是因?yàn)樗鼈兒茈y被發(fā)現(xiàn),而且可能來(lái)自任何在線用戶,甚至是經(jīng)過驗(yàn)證的用戶。
通過Web開發(fā)課程中“入侵與防范”的講授,使學(xué)生了解Web系統(tǒng)中存在的安全風(fēng)險(xiǎn)與威脅,掌握Web安全的基本知識(shí)和技術(shù),并使學(xué)生能夠初步具備提高Web系統(tǒng)安全意識(shí)與掌握安全防范技術(shù)的基礎(chǔ)。該課程的教學(xué)內(nèi)容包括如下幾個(gè)方面:
(1) 客戶機(jī)的漏洞,主要內(nèi)容包括對(duì)客戶端驗(yàn)證的攻擊。
(2) 基于狀態(tài)的攻擊,主要內(nèi)容包括隱藏域、CGI參數(shù)、破壞Cookie、URL跳躍以及會(huì)話劫持。
(3) SQL注入,主要內(nèi)容包括常見數(shù)據(jù)庫(kù)漏洞、創(chuàng)建SQL注入檢測(cè)的數(shù)據(jù)庫(kù)平臺(tái)、搭建SQL注入漏洞站點(diǎn)、SQL注入攻擊測(cè)試、卡住SQL注入的關(guān)口、存儲(chǔ)過程的SQL注入。
(4) 配置安全的Web服務(wù)器,主要內(nèi)容包括數(shù)據(jù)庫(kù)的安全防護(hù)、Access數(shù)據(jù)庫(kù)防下載處理、SQL數(shù)據(jù)庫(kù)的配置、對(duì)網(wǎng)頁(yè)木馬后門的防范和檢測(cè)、網(wǎng)頁(yè)木馬后門查找工具、設(shè)置網(wǎng)站訪問權(quán)限。
2教學(xué)方法
Web開發(fā)課程中“入侵與防范”是學(xué)生比較感興趣的內(nèi)容,課程涉及的內(nèi)容比較多,如何使學(xué)生掌握關(guān)鍵的Web安全技術(shù),具備初步的Web開發(fā)中安全防范能力?我們?cè)谥v課中就教學(xué)方法進(jìn)行了一些具體研究。
2.1橫向聯(lián)系和縱向深入教學(xué)方法研究
2.1.1橫向聯(lián)系的教學(xué)方法
Web開發(fā)課程中在講授客戶端驗(yàn)證需要注意的安全問題時(shí),采用橫向聯(lián)系的教學(xué)方法,分別講授了:Windows身份驗(yàn)證、Forms身份驗(yàn)證、Passport身份驗(yàn)證。
(1) Windows身份驗(yàn)證
在 ASP.Net應(yīng)用程序中,Windows 身份驗(yàn)證將 Microsoft Internet 信息服務(wù)(IIS)所提供的用戶標(biāo)識(shí)視為已經(jīng)過身份驗(yàn)證的用戶。IIS 提供了大量用于驗(yàn)證用戶標(biāo)識(shí)的身份驗(yàn)證機(jī)制,其中包括匿名身份驗(yàn)證、Windows 集成的 (NTLM)身份驗(yàn)證、Windows集成的(Kerberos)身份驗(yàn)證、基本(base64編碼)身份驗(yàn)證、摘要式身份驗(yàn)證以及基于客戶端證書的身份驗(yàn)證。
在ASP.Net中,使用 WindowsAuthenticationModule 模塊來(lái)實(shí)現(xiàn) Windows 身份驗(yàn)證。該模塊根據(jù) IIS 所提供的憑據(jù)構(gòu)造一個(gè) WindowsIdentity對(duì)象,并將該標(biāo)識(shí)設(shè)置為該應(yīng)用程序的當(dāng)前 User 屬性值。
Windows身份驗(yàn)證是ASP.Net應(yīng)用程序的默認(rèn)身份驗(yàn)證機(jī)制,并被標(biāo)識(shí)為使用 authentication配置元素的應(yīng)用程序的身份驗(yàn)證模式,如下面的示例所示。
(2) Forms身份驗(yàn)證
Forms身份驗(yàn)證提供了一種方法,使您可以使用自己的代碼對(duì)用戶進(jìn)行身份驗(yàn)證,然后將身份驗(yàn)證標(biāo)記保留在 Cookie 或頁(yè)的URL中。Forms身份驗(yàn)證通過Forms AuthenticationModule參與ASP.Net頁(yè)的生命周期??梢酝ㄟ^FormsAuthentication類訪問Forms身份驗(yàn)證信息和功能。通過Forms身份驗(yàn)證,可以使用所創(chuàng)建的登錄窗體驗(yàn)證用戶的用戶名和密碼。未經(jīng)過身份驗(yàn)證的請(qǐng)求被重定向到登錄頁(yè),用戶在該頁(yè)上提供憑據(jù)和提交窗體。如果應(yīng)用程序?qū)φ?qǐng)求進(jìn)行了驗(yàn)證,系統(tǒng)會(huì)頒發(fā)一個(gè)票證,該票證包含用于重建后續(xù)請(qǐng)求的標(biāo)識(shí)的密鑰。
(3)Passport身份驗(yàn)證
Passport身份驗(yàn)證是由 Microsoft 提供的集中身份驗(yàn)證服務(wù),該服務(wù)為成員站點(diǎn)提供單一登錄和核心配置文件服務(wù)。Passport 是基于 Cookie 的身份驗(yàn)證服務(wù)。使用 Passport 身份驗(yàn)證的示例事務(wù)對(duì)話的工作方式如下:
客戶端向受到保護(hù)的資源(如 http://www.contoso.com/ default.aspx)發(fā)出HTTP GET請(qǐng)求。
檢查客戶的Cookie是否具有現(xiàn)有的Passport身份驗(yàn)證票。如果站點(diǎn)找到有效的憑據(jù),則站點(diǎn)對(duì)該客戶進(jìn)行身份驗(yàn)證。如果請(qǐng)求不包括有效的身份驗(yàn)證票,則服務(wù)器返回狀態(tài)代碼 302 并將客戶重定向到Passport登錄服務(wù)。響應(yīng)在查詢字符串中包含一個(gè)URL,該URL被發(fā)送到 Passport 登錄服務(wù)以便將客戶定向回原始站點(diǎn)??蛻舳藞?zhí)行重定向操作,再向Passport登錄服務(wù)器發(fā)出HTTP GET請(qǐng)求,然后傳輸來(lái)自原始站點(diǎn)的查詢字符串信息。Passport 登錄服務(wù)器向客戶提供登錄窗體??蛻舳颂顚懘绑w,并使用安全套接字層(SSL)將 POST發(fā)送回登錄服務(wù)器。登錄服務(wù)器對(duì)用戶進(jìn)行身份驗(yàn)證并將客戶重定向回原始URL。響應(yīng)在查詢字符串中包含一個(gè)加密的Passport Cookie??蛻糇裱囟ㄏ虿⒃俅握?qǐng)求原始的受保護(hù)資源,這一次使用 Passport Cookie。起始服務(wù)器上的 PassportAuthenticationModule 會(huì)檢測(cè)是否存在 Passport Cookie,并測(cè)試身份驗(yàn)證。如果成功,則該請(qǐng)求通過身份驗(yàn)證。
2.1.2縱向深入的教學(xué)方法
講授ASP.Net網(wǎng)站安全時(shí)采用縱向深入、逐步擴(kuò)展的教學(xué)方法:操作系統(tǒng)安全、IIS安全、數(shù)據(jù)庫(kù)的安全。
操作系統(tǒng)安全內(nèi)容包括:
(1) 在第一時(shí)間下載安裝微軟的補(bǔ)丁程序
(2) 安裝防火墻
(3) 安裝防病毒軟件
(4) 不要在服務(wù)器上執(zhí)行管理功能以外的功能
IIS安全內(nèi)容包括:
(1) 將IIS的默認(rèn)Web站點(diǎn)從c:intepub更改到其他卷
(2) 確保應(yīng)用程序使用低權(quán)限的本地服務(wù)帳戶運(yùn)行ASP.NET代碼
(3) 設(shè)置Web目錄的訪問權(quán)限
數(shù)據(jù)庫(kù)的安全內(nèi)容包括:
(1) 將SQL Server安裝在NTFS分區(qū)上
(2) 安裝當(dāng)時(shí)發(fā)布的最新服務(wù)器包和修補(bǔ)程序
(3) 給sa帳戶設(shè)置足夠復(fù)雜的密碼
編程時(shí)需要注意的安全問題也采用縱向深入的教學(xué)方法,內(nèi)容如下:身份驗(yàn)證、輸入有效的驗(yàn)證(利用內(nèi)置的驗(yàn)證控件或自行定義,阻止不符合規(guī)范的數(shù)據(jù)的提交)、使用參數(shù)化的存儲(chǔ)過程、輸出數(shù)據(jù)進(jìn)行HTML編碼、信息加密存儲(chǔ)。
2.2采用了啟發(fā)式教學(xué)方法
針對(duì)Web開發(fā)課程中“入侵與防范”的涉及內(nèi)容多、學(xué)時(shí)數(shù)少的特點(diǎn),我們采用了啟發(fā)式教學(xué)方法,發(fā)揮學(xué)生主動(dòng)性,鼓勵(lì)學(xué)生自學(xué)一些內(nèi)容。在課程內(nèi)容安排上先講解Web系統(tǒng)遇到的威脅、分析入侵的原因,然后對(duì)各種Web系統(tǒng)攻擊技術(shù)進(jìn)行深入的介紹與分析,并給以詳細(xì)的攻擊演示,使學(xué)生能夠?qū)eb系統(tǒng)攻擊技術(shù)有一個(gè)整體的認(rèn)識(shí),對(duì)Web安全技術(shù)產(chǎn)生興趣。在隨后的Web安全技術(shù)的講解中,精心設(shè)計(jì)教學(xué)課件,關(guān)鍵部分采用了案例教學(xué),使學(xué)生能夠深刻理解學(xué)習(xí)內(nèi)容,激發(fā)學(xué)生的學(xué)習(xí)興趣,取得了良好的教學(xué)效果。這門課程涉及內(nèi)容比較廣泛,為避免“填鴨式”的教學(xué)方法,我們采用了啟發(fā)式教學(xué)方法。針對(duì)Web入侵出現(xiàn)的一些現(xiàn)象提出問題,鼓勵(lì)學(xué)生分析問題和解決問題的思路,引導(dǎo)學(xué)生學(xué)會(huì)表達(dá)、學(xué)會(huì)傾聽,學(xué)生回答問題后給予贊揚(yáng)和指點(diǎn),使學(xué)生養(yǎng)成積極思考的習(xí)慣。
2.3運(yùn)用“任務(wù)驅(qū)動(dòng)式”教學(xué)方法
“任務(wù)驅(qū)動(dòng)”教學(xué)方法提倡教師指導(dǎo)下的、以學(xué)生為中心的學(xué)習(xí)。在整個(gè)教學(xué)過程中教師起組織者、指導(dǎo)者、幫助者和促進(jìn)者的作用,利用情境、協(xié)作、會(huì)話等學(xué)習(xí)環(huán)境要素充分發(fā)揮學(xué)生的主動(dòng)性、積極性和創(chuàng)造性,最終達(dá)到使學(xué)生有效地實(shí)現(xiàn)對(duì)當(dāng)前所學(xué)知識(shí)的意義建構(gòu)的目的?!叭蝿?wù)驅(qū)動(dòng)”教學(xué)法的主要特點(diǎn)是“任務(wù)驅(qū)動(dòng),注重實(shí)踐”。它很適合Web開發(fā)課程中“入侵與防范”的教學(xué),因?yàn)樵撜n程大多是實(shí)踐性很強(qiáng)的課程,要求學(xué)生既要學(xué)好理論知識(shí),又要掌握實(shí)際操作技能。同時(shí)由于這些課程知識(shí)內(nèi)容更新很快,要求學(xué)生必須具有一定的自主學(xué)習(xí)能力與獨(dú)立分析問題、解決問題能力,才能適應(yīng)信息時(shí)代與學(xué)科知識(shí)發(fā)展的特點(diǎn)。
合理分解任務(wù)是任務(wù)驅(qū)動(dòng)教學(xué)法的關(guān)鍵。分解任務(wù)是將一個(gè)大的任務(wù)分成若干個(gè)子任務(wù),再將子任務(wù)往下分,直到每個(gè)子任務(wù)可操作或執(zhí)行為止。在這些子任務(wù)中,有很多是以前沒學(xué)過的知識(shí)或技能技巧,即隱含了新的知識(shí)點(diǎn),這時(shí)就需要引發(fā)學(xué)生的積極性和探究問題(任務(wù))的欲望,教師就得使用各種信息技術(shù)手段,創(chuàng)設(shè)任務(wù)情景,通過講解、示范等多種教學(xué)方法,盡量不讓學(xué)生對(duì)任務(wù)產(chǎn)生太大的畏難以致抵觸情緒。教師要做到讓學(xué)生在情境中學(xué)習(xí),在任務(wù)的分解過程中獲取知識(shí),提高分析問題的能力。如“攻”、“防”是大任務(wù),大任務(wù)下有三個(gè)一級(jí)的子任務(wù):網(wǎng)站入侵的常見手法、流行網(wǎng)站入侵手法與防范、遠(yuǎn)程攻擊入侵網(wǎng)站與防范、網(wǎng)站源代碼安全分析與測(cè)試,在四個(gè)子任務(wù)中又分別有若干個(gè)二級(jí)子任務(wù)。在教學(xué)時(shí),先讓學(xué)生完成一個(gè)個(gè)二級(jí)子任務(wù),學(xué)生可自由發(fā)揮,教師指導(dǎo)。隨著任務(wù)分析的深入細(xì)致,使“攻”、“防”大任務(wù)不斷完整,結(jié)構(gòu)不斷清晰。這實(shí)際上是將教學(xué)的內(nèi)容拆解為一個(gè)個(gè)的“任務(wù)”,逐步地展示、布置給學(xué)生了。然后綜合每人的“任務(wù)”成果,從而了解網(wǎng)站入侵的全部過程。在此過程中,教師可以給出一些實(shí)例以供參考,讓學(xué)生產(chǎn)生感性認(rèn)識(shí),知道這些功能或任務(wù)是可以通過學(xué)習(xí)完成的。這樣可以逐步消除對(duì)完成任務(wù)的畏懼感,樹立信心,使教學(xué)過程得以順利進(jìn)行。
2.4分層架構(gòu)教學(xué)方法
我在講授ASP.Net和JSP課程中涉及到Web的安全問題,例如:JSP采用MVC模式分層架構(gòu)(STRUTS框架)進(jìn)行開發(fā),就可以把所有的文件分開,根據(jù)其用途,分別放在不同的文件夾下(分層),每個(gè)文件夾下的文件只負(fù)責(zé)自己的事情。例如數(shù)據(jù)訪問層的代碼就放在數(shù)據(jù)訪問層的文件夾下,業(yè)務(wù)邏輯層的代碼也都放在自己的文件夾下,當(dāng)顯示層(這一層是為了把最終的運(yùn)算結(jié)果顯示給用戶看)的需求發(fā)生變化,就像前面的客戶需求,我們只要修改這一層的文件就是了,其他層的代碼根本不需要?jiǎng)?而修改者也不需要懂得其它層的代碼。代碼分層了,意味著漏洞也在跟著分層,我們尋找JSP漏洞的思路也要跟著分層,才能與時(shí)俱進(jìn)。
3結(jié)束語(yǔ)
本文從課程教學(xué)實(shí)際出發(fā),對(duì)Web開發(fā)課程中“入侵與防范”教學(xué)過程中的教學(xué)方法進(jìn)行了一些具體研究。教學(xué)不僅要傳授給學(xué)生知識(shí),更重要的是培養(yǎng)他們分析問題和解決問題的能力。Web安全是計(jì)算機(jī)學(xué)科的一個(gè)新方向,Web應(yīng)用攻擊之所以與其他攻擊不同,是因?yàn)樗鼈兒茈y被發(fā)現(xiàn),而且可能來(lái)自任何在線用戶,甚至是經(jīng)過驗(yàn)證的用戶。很多技術(shù)在現(xiàn)有的教科書中都沒有涉及。在教學(xué)過程中,注重和學(xué)生的思想交流,鍛煉他們的動(dòng)手能力,從“攻”、“防”兩個(gè)角度,通過現(xiàn)實(shí)中的入侵實(shí)例,并結(jié)合原理性的分析,展現(xiàn)Web系統(tǒng)入侵與防御的全過程,激發(fā)他們的創(chuàng)造思維。根據(jù)同學(xué)自身的特點(diǎn),有針對(duì)性地進(jìn)行指導(dǎo)。注重發(fā)揮學(xué)生的積極主動(dòng)性,創(chuàng)造機(jī)會(huì)使學(xué)生發(fā)揮自己的價(jià)值。
參考文獻(xiàn):
[1]Simson Garfinkel,Gene Spafford .Web安全與電子商務(wù)(影印版)[M]. 2版. 北京:清華大學(xué)出版社,2002.
[2]Steven Splaine. Testing Web Security:Assessing the Security of Web Sites and Applications[M]. 李昂,王梅蓉,金旭,譯. 北京:機(jī)械工業(yè)出版社,2003.
[3]William Stalllings.網(wǎng)絡(luò)安全基礎(chǔ)應(yīng)用與標(biāo)準(zhǔn)[M].3版. 白國(guó)強(qiáng),譯. 北京:清華大學(xué)出版社,2007.