摘 要:HTML5是新一代的Web應(yīng)用程序構(gòu)建基準(zhǔn),它包含了全新的標(biāo)簽格式、改良的通信機(jī)制、本地存儲(chǔ)、離線應(yīng)用和多線程等諸多令人激動(dòng)的新特性。但同時(shí)這些新特性也引入了新的安全問題。本文針對(duì)新農(nóng)村信息化服務(wù)平臺(tái)使用對(duì)象的特殊性,論述了利用HTML5這個(gè)新的技術(shù)來開發(fā)此服務(wù)平臺(tái)更應(yīng)該考慮的安全問題,并給出了相應(yīng)的對(duì)策。
關(guān)鍵詞:HTML5;新農(nóng)村;安全;攻擊;信息化
中圖分類號(hào):TP311.52
隨著信息技術(shù)和通信技術(shù)的高速發(fā)展和廣泛應(yīng)用,信息化已經(jīng)是社會(huì)各個(gè)角落不可缺少的一部分,更加讓我們難以預(yù)料的是,人們對(duì)信息的獲取方式已經(jīng)從原來的只能在固定的場(chǎng)所、單一的電腦上獲得,到現(xiàn)在的人們無論何時(shí)何地,只要有一部智能手機(jī)就可以獲得想要的信息。對(duì)于新農(nóng)村的建設(shè)中一個(gè)重要部分——信息化建設(shè),也在追隨著新技術(shù)帶來的快感,人們都在將自己的信息化服務(wù)平臺(tái)從電腦移植到手機(jī)。
對(duì)于移動(dòng)開發(fā)技術(shù),HTML5現(xiàn)在得到主流移動(dòng)設(shè)備的普遍支持,并成為創(chuàng)建和部署面向移動(dòng)平臺(tái)瀏覽器內(nèi)容的最佳解決方案。雖然HTML5對(duì)舊有的安全策略進(jìn)行了非常多的補(bǔ)充,如HTML5為iframe元素增加了sandbox屬性防止不信任的Web頁(yè)面執(zhí)行某些操作,訪問父頁(yè)面的DOM、執(zhí)行腳本、訪問本地存儲(chǔ)或者本地?cái)?shù)據(jù)庫(kù)等等。但是這也對(duì)HTML5開發(fā)的面向移動(dòng)的應(yīng)用程序面臨新的被攻擊風(fēng)險(xiǎn)。
1 HTML5新技術(shù)帶來的攻擊與防御
在新農(nóng)村信息化移動(dòng)服務(wù)平臺(tái)的建設(shè)中,如何有效的防范HTML5新技術(shù)帶來的攻擊問題,應(yīng)從以下幾方面防范:
1.1 防御CORS攻擊。CORS-CrossOrigin Resources Sharing,也即跨源資源共享,它定義了一種瀏覽器和服務(wù)器交互的方式來確定是否允許跨域請(qǐng)求。
CORS非常有用,可以共享許多內(nèi)容,不過這里存在風(fēng)險(xiǎn)。因?yàn)樗耆且粋€(gè)盲目的協(xié)議,只是通過HTTP頭來控制。它的風(fēng)險(xiǎn)包括:(1)HTTP頭只能說明請(qǐng)求來自一個(gè)特定的域,但是并不能保證這個(gè)事實(shí)。因?yàn)镠TTP頭可以被偽造。所以未經(jīng)身份驗(yàn)證的跨域請(qǐng)求應(yīng)該永遠(yuǎn)不會(huì)被信任。如果一些重要的功能需要暴露或者返回敏感信息,應(yīng)該需要驗(yàn)證Session ID。(2)第三方有可能被入侵。舉一個(gè)場(chǎng)景,F(xiàn)riendFeed通過跨域請(qǐng)求訪問Twitter,F(xiàn)riendFeed請(qǐng)求tweets、提交tweets并且執(zhí)行一些用戶操作,Twitter提供響應(yīng)。兩者都互相相信對(duì)方,所以FriendFeed并不驗(yàn)證獲取數(shù)據(jù)的有效性,Twitter也針對(duì)Twitter開放了大部分的功能。
對(duì)于CORS攻擊,首先應(yīng)該做到不信任未經(jīng)身份驗(yàn)證的跨域請(qǐng)求,必須先驗(yàn)證Session ID或者Cookie;其次對(duì)于請(qǐng)求方來說驗(yàn)證接收的數(shù)據(jù)有效性,服務(wù)方僅暴露最少最必須的功能;再次通過多種條件屏蔽掉非法的請(qǐng)求,例如HTTP頭、參數(shù)等。
1.2 防御Web Storage攻擊。HTML5支持Web Storage,開發(fā)者可以為應(yīng)用創(chuàng)建本地存儲(chǔ),存儲(chǔ)一些有用的信息。LocalStorage的API都是通過Javascript提供的,這樣攻擊者可以通過XSS攻擊竊取信息,例如用戶token或者資料。攻擊者可以用下面的腳本遍歷本地存儲(chǔ)。
if(localStorage.length){
for(I in localStorage) {
console.log(i);
console.log(localStorage.getItem(i));
}
}
對(duì)于Web Storage攻擊,我們應(yīng)盡量做到數(shù)據(jù)放在合適的作用域里,并且不要存儲(chǔ)敏感的信息。
1.3 防御Web SQL攻擊。數(shù)據(jù)庫(kù)安全一直是后端人員廣泛關(guān)注和需要預(yù)防的問題。但是自從HTML5引入本地?cái)?shù)據(jù)庫(kù)和Web SQL之后,前端開發(fā)對(duì)于數(shù)據(jù)庫(kù)的安全也必須要有所了解和警惕。Web SQL的安全問題通常表現(xiàn)為兩個(gè)部分:
第一種是SQL注入:攻擊者可以通過SQL注入點(diǎn)來進(jìn)行數(shù)據(jù)庫(kù)攻擊。如我們有一個(gè)URL為http:/blog.csdn.net/hfahe?id=1,它接收了一個(gè)id參數(shù)來進(jìn)行本地?cái)?shù)據(jù)庫(kù)查詢并輸出,對(duì)應(yīng)的SQL語句為“select name from user where id = 1”。針對(duì)這個(gè)簡(jiǎn)單的SQL查詢,攻擊者可以構(gòu)造一個(gè)虛假的輸入數(shù)據(jù)“1 or 1 = 1”,那么我們的SQL語句將變?yōu)椤皊elect name from user where id = 1 or 1 = 1”。這就相當(dāng)糟糕了,因?yàn)?=1這個(gè)條件總是成立的,那么這條語句將遍歷數(shù)據(jù)庫(kù)user表里的所有記錄并進(jìn)行輸出。
另外一方面,如果Web App有XSS漏洞,那么本地?cái)?shù)據(jù)很容易泄漏,可以想想本地?cái)?shù)據(jù)庫(kù)里存儲(chǔ)了用戶最近交易記錄或者私信的情況。
針對(duì)WebSQL攻擊,應(yīng)做到如下方法預(yù)防:(1)檢查輸入類型,過濾危險(xiǎn)字符。我們需要保證輸入類型符合預(yù)期,例如上面的id參數(shù)一定是數(shù)字類型;同時(shí)過濾掉危險(xiǎn)的關(guān)鍵字和符號(hào),像PHP里addslashes這個(gè)函數(shù)的作用一樣。(2)在SQL語句中盡量使用參數(shù)形式。例如:executeSql(\"SELECTname FROM stud WHERE id=\" + input_id)這種字符串拼接的形式并不安全,可以換為executeSql(\"SELECTname FROM stud WHERE id=?“,[input_id]);)這樣能保證參數(shù)的輸入符合設(shè)定的類型。(3)謹(jǐn)慎對(duì)待每一次SQL操作。無論是select、modify、update或者delete,你編寫的任何一條SQL語句操作都有可能成為攻擊者的攻擊對(duì)象,造成重大損失,所以都必須要謹(jǐn)慎對(duì)待。(4)不要存儲(chǔ)重要數(shù)據(jù)。本地?cái)?shù)據(jù)庫(kù)永遠(yuǎn)透明而不安全,重要的數(shù)據(jù)必須要存儲(chǔ)在服務(wù)器上,本地?cái)?shù)據(jù)庫(kù)里沒有重要數(shù)據(jù)就不會(huì)對(duì)用戶造成重大損失。(5)杜絕XSS漏洞。
1.4 防御新標(biāo)簽攻擊。HTML5去掉了很多過時(shí)的標(biāo)簽,例如
它使用了一個(gè)source標(biāo)簽,而沒有指定具體的src,所以后面的onerror方法會(huì)立即得到執(zhí)行。
攻擊者利用上面的示例方式就可以對(duì)系統(tǒng)進(jìn)行XSS注入攻擊。例如攻擊者輸入http://www.yujie.com/1.php?text=
2 總結(jié)
面對(duì)HTML5新技術(shù)帶來的安全問題,我們?cè)诶眯录夹g(shù)進(jìn)行新農(nóng)村信息化移動(dòng)服務(wù)平臺(tái)開發(fā)過程中,更應(yīng)該謹(jǐn)慎使用,因?yàn)槲覀兊钠脚_(tái)面向的是廣大農(nóng)民,他們的安全意識(shí)還很單薄。為了使平臺(tái)能得到更好的用戶體驗(yàn),在追求新技術(shù)的同時(shí),我們更要關(guān)注新技術(shù)帶來的安全問題。
參考文獻(xiàn):
[1]蔡友林,潘仕彬,何為民.基于IC卡的電子錢包系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].東華理工大學(xué)學(xué)報(bào):自然科學(xué)版,2008,31(2):197-200.
[2]王靜,呂勇奇.小額支付系統(tǒng)條件下城市金融綜合服務(wù)平臺(tái)發(fā)展創(chuàng)新探索[J].金融電子化,2009(5):45-47.
[3]PILGRIM M.HTML5:Up and Running[M].Sebastopol:O'Reilly Media,2010.
[4]沈昌祥.云計(jì)算安全[J].信息安全與通信保密,2010(12):12-15.
作者簡(jiǎn)介:韓智慧(1978-),女,碩士,講師,研究方向:計(jì)算機(jī)應(yīng)用技術(shù);趙建華(1979-),通訊作者,男,碩士,研究方向:人工智能與數(shù)據(jù)挖掘。
作者單位:長(zhǎng)春科技學(xué)院 信息工程學(xué)院,長(zhǎng)春 130600;長(zhǎng)春師范大學(xué) 網(wǎng)絡(luò)中心,長(zhǎng)春 130032
項(xiàng)目來源:長(zhǎng)春科技學(xué)院校內(nèi)科研課題“關(guān)于新農(nóng)村信息化綜合服務(wù)平臺(tái)的設(shè)計(jì)與運(yùn)行研究”。