版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
H5應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案
目錄
一.HTML5概述....................................................................3
二.HTML5應(yīng)用開發(fā)模式...........................................................4
三.H5應(yīng)用架構(gòu)分析..............................................................5
四.H5應(yīng)用安全風(fēng)險(xiǎn)...............................................................6
4.1H5應(yīng)用面臨的安全風(fēng)險(xiǎn)........................................................6
4.2針對(duì)移動(dòng)應(yīng)用的攻擊...........................................................6
4.2.1靜態(tài)攻擊................................................................6
4.2.2動(dòng)態(tài)攻擊.................................................................7
4.3個(gè)人信息違規(guī)收集..............................................................7
4.4安全建設(shè)目標(biāo)..................................................................8
五.H5應(yīng)用安全解決方案SDK...............................................................................................................9
5.1SDK授權(quán)安全.................................................................9
5.2客戶端程序安全...............................................................10
5.2.1客戶端程序保護(hù)........................................................10
5.2.2客戶端程序簽名..........................................................10
5.2.3移動(dòng)客戶端運(yùn)行環(huán)境安全..................................................11
5.2.4數(shù)據(jù)存儲(chǔ)安全............................................................11
5.2.5數(shù)據(jù)交互安全............................................................12
5.2.6資源管理.................................................................13
5.3通信安全.....................................................................13
5.3.1SSL/TLS安全配置.......................................................13
5.3.2客戶端證書有效性校瞼....................................................14
5.3.3數(shù)據(jù)傳輸安全............................................................14
5.4服務(wù)器端安全.................................................................15
5.4.1SDK授權(quán)................................................................15
5.4.2身份安全認(rèn)證............................................................15
5.4.3短信驗(yàn)證碼安全..........................................................18
5.4.4訪問控制................................................................18
5.4.5應(yīng)用接口安全............................................................19
5.4.6數(shù)據(jù)交互安全............................................................19
5.4.7數(shù)據(jù)存儲(chǔ)安全............................................................22
5.5個(gè)人信息安全................................................................23
5.5.1個(gè)人信息安全...........................................................23
5.5.2運(yùn)營者對(duì)用戶權(quán)利的保障................................................24
一.HTML5概述
網(wǎng)頁技術(shù)(B/S)是互聯(lián)網(wǎng)技術(shù)在各個(gè)行業(yè)業(yè)務(wù)應(yīng)用的廣泛和重要的技術(shù)領(lǐng)
域,HTML5是基于兼容性、實(shí)用性、互通性以及通用訪問性的理念設(shè)計(jì)而成
的,隨著HTML5(以下簡稱“H5”)的發(fā)布和應(yīng)用,H5已經(jīng)成為了互聯(lián)網(wǎng)全新
的框架和平臺(tái),包括提供免插件的音視頻、圖像切畫、本地存儲(chǔ)以及更多酷炫而
且重要的功能,并使這些應(yīng)用標(biāo)準(zhǔn)化和開放化,從而能夠輕松實(shí)現(xiàn)類似桌面的應(yīng)
用體驗(yàn),并且,H5的最顯著的優(yōu)勢在于跨平臺(tái)性,用H5搭建的站點(diǎn)應(yīng)用可以
兼容PC端與移動(dòng)端、windows與Linux、安卓和iOS,它可以輕易地嵌入到各
種不同的開放平臺(tái)、應(yīng)用平臺(tái)上。
二.HTML5應(yīng)用開發(fā)模式
目前主流的應(yīng)用程序大體分為三類:WebAPP、NativeAPP和Hybrid
APPo
?WebAPP:指采用H5語言寫出的App,不需要下載安裝。生存在瀏覽
器中的應(yīng)用,基本上可以說是觸屏版的網(wǎng)頁應(yīng)用。
?NativeApp:指的是Android或iOS原生應(yīng)用程序,一般依托于操
作系統(tǒng),具有較強(qiáng)的交互性和體驗(yàn)性,可拓展性強(qiáng)。需要用戶下載安裝使用。
?HybridApp:指的是半原生半Web的混合類App。需要下載安裝,看
上去類似NativeApp,但只有很少的UT組件,通過WebView組件加載
H5頁面,展示W(wǎng)eb內(nèi)容。
三種開發(fā)模式的優(yōu)缺點(diǎn)對(duì)比如下表所示:
特性WebAPPNativeAPPHybridAPP
開發(fā)語言
基于的操作系統(tǒng)
不同,實(shí)現(xiàn)的語展示界面通過115
使用Web開發(fā)語言不同,Java設(shè)計(jì),交互通過
言即可和Object-C語Native語言實(shí)
言居現(xiàn)
多
代碼移植和優(yōu)化高無高
訪問針對(duì)特定設(shè)低高中
備的特性
充分利用現(xiàn)有知高低高
識(shí)
高級(jí)圖形中高中
低,需要通過應(yīng)中,可局部更新
升級(jí)靈活性高
用商店或自檢測和應(yīng)用商店更新
下載升級(jí)包升級(jí)
安裝體驗(yàn)中,通過移動(dòng)瀏高,從應(yīng)用商店高,可從應(yīng)用商
覽器安裝安裝店安裝
三.H5應(yīng)用架構(gòu)分析
一般來說,當(dāng)前大部分“混合型H5應(yīng)用”采用如下技術(shù)結(jié)構(gòu):
客戶端服務(wù)器端
客戶端程序
H5頁面腳本
DB
瀏龍翔控件
(解析處理腳本)
用
戶File
接
口
操作系統(tǒng)
在這種模式下,服務(wù)器端通過其控制的“原生邏輯處理”調(diào)用服務(wù)端的H5腳本,
在“瀏覽器控制”中展示115頁面。在此模式下,相關(guān)組件控制方包括:
?服務(wù)端控制的組件:H5頁面腳本、服務(wù)接入端;
?可能為第三方的控制組件:原生界面控件、原生邏輯處理、瀏覽器控件;
?通用組件:操作系統(tǒng)
四.H5應(yīng)用安全風(fēng)險(xiǎn)
移動(dòng)應(yīng)用作為個(gè)人生活、辦公和業(yè)務(wù)支撐的重要部分,也面臨著來自移動(dòng)平
臺(tái)的安全風(fēng)險(xiǎn),不僅僅來自于惡意程序、惡意代碼,更多的是惡意的攻擊行為、
篡改行為和釣魚攻擊。由于WebAPP通過移動(dòng)瀏覽器加載顯示頁面以及與報(bào)務(wù)
器端進(jìn)行數(shù)據(jù)交互,面臨攻擊風(fēng)險(xiǎn)的是服務(wù)器端,因此,下方小節(jié)所講述的針對(duì)
移動(dòng)應(yīng)用攻擊不包括WebAPP0
4.1H5應(yīng)用面臨的安全風(fēng)險(xiǎn)
在“非加固”的“混合型H5應(yīng)用”場景中,會(huì)出現(xiàn)以下的信息安全風(fēng)險(xiǎn):
?客戶端安全
?通信安全
?服務(wù)器安全
■客戶端程序保護(hù)安全?數(shù)據(jù)交互安全
?應(yīng)用接口安全
?客戶端?通信
?客戶端運(yùn)行^境安全?購安全認(rèn)證
?客戶端懶交互安全■雌
■運(yùn)行環(huán)境安全
客戶端安全通信安全服務(wù)端安全
4.2針對(duì)移動(dòng)應(yīng)用的攻擊
從整體上來說,針對(duì)移動(dòng)應(yīng)用常見的攻擊手段主要有靜態(tài)攻擊和動(dòng)態(tài)攻擊兩
種。
4.2.1靜態(tài)攻擊
靜態(tài)攻擊通過對(duì)發(fā)布的應(yīng)用進(jìn)行靜態(tài)分析,使用反編譯及逆向工程分析的手
段,發(fā)現(xiàn)并利用應(yīng)用的脆弱點(diǎn),對(duì)目標(biāo)用戶進(jìn)行攻擊。攻擊流程如下圖所示:
選定安全防御脆
弱的目標(biāo)
確定攻擊點(diǎn)
開發(fā)攻擊程序
反編譯及逆向工找到應(yīng)用漏洞
程分析
開發(fā)釣魚程序
確定攻擊方式
攻擊者將篡改后的應(yīng)用重新投放市場,當(dāng)使用者下載安裝后,就會(huì)面臨被攻
擊的風(fēng)險(xiǎn),輕則泄露個(gè)人信息,重則導(dǎo)致資金損失。
4.2.2動(dòng)態(tài)攻擊
動(dòng)態(tài)攻擊是攻擊者通過對(duì)應(yīng)用動(dòng)態(tài)調(diào)試的方式,使用注入(代碼注入或進(jìn)程
注入)或者修改內(nèi)存數(shù)據(jù),達(dá)到對(duì)用戶或者服務(wù)器攻擊的目的。攻擊流程如下圖
所示:
|選定安全防御脆弱
I的目標(biāo)
調(diào)試、注入應(yīng)用
確定交易劫持點(diǎn)
確定用戶信息劫持點(diǎn)
監(jiān)測應(yīng)用
攻擊者通過動(dòng)態(tài)調(diào)試,可達(dá)到如下攻擊目的:
?通過動(dòng)態(tài)調(diào)試,分析應(yīng)用處理邏輯,達(dá)到憑過認(rèn)證的目的;
?通過動(dòng)態(tài)調(diào)試,hook關(guān)鍵函數(shù),篡改提交數(shù)據(jù),提交至服務(wù)器端,對(duì)
服務(wù)器進(jìn)行攻擊,如SQL注入。
?通過監(jiān)測目標(biāo)應(yīng)用,對(duì)目標(biāo)應(yīng)用進(jìn)行界面劫持,達(dá)到釣魚的目的。
4.3個(gè)人信息違規(guī)收集
有關(guān)個(gè)人信息收集應(yīng)符合《移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)收集使用個(gè)人信息
自評(píng)估指南》、《App違法違規(guī)收集使用個(gè)人信息自評(píng)估指南》、《App違法違
規(guī)收集使用個(gè)人信息行為認(rèn)定方法》、《(工信部信管函(2019)337號(hào))和工
信部信管函(2020)164號(hào)》、《APP用戶權(quán)益保護(hù)測評(píng)規(guī)范》等有關(guān)標(biāo)準(zhǔn)要求。
4.4安全建設(shè)目標(biāo)
移動(dòng)應(yīng)用在整個(gè)業(yè)務(wù)中扮演越來越重要的作用,針對(duì)移動(dòng)應(yīng)用所面臨的風(fēng)
險(xiǎn),需要建立一套針對(duì)H5應(yīng)用的,適應(yīng)未來發(fā)展需求的安全體系,應(yīng)達(dá)到如
下目標(biāo):
技術(shù)加固:
?減少移動(dòng)客戶端開發(fā)階段引入的漏洞缺陷;
?強(qiáng)化移動(dòng)客戶端應(yīng)對(duì)各種攻擊的能力;
?強(qiáng)化授權(quán)認(rèn)證的能力;
應(yīng)用管理:
?明確各業(yè)務(wù)場景的安全風(fēng)險(xiǎn),制定各安全場景下的業(yè)務(wù)開展模式;
?制定安全開發(fā)規(guī)范,將安全風(fēng)險(xiǎn)解決于開發(fā)階段。
?建立持續(xù)的移列應(yīng)用安全體系。
五.H5應(yīng)用安全解決方案SDK
5.1SDK授權(quán)安全
基于業(yè)務(wù)需要,將自身業(yè)務(wù)封裝為SDK供第三方應(yīng)用接入,在接入過程中,
需要保證自身業(yè)務(wù)系統(tǒng)的安全性。
定制開發(fā)的SDK,應(yīng)實(shí)現(xiàn)如下功能:
?敏感信息加密:針對(duì)前端頁面?zhèn)魅氲拿舾行畔ⅲㄈ缑艽a等),對(duì)信息加密
后再傳入服務(wù)器端。
?終端信息提?。禾崛〗K端信息,包括但不限于deviceid、mac地址、
app應(yīng)用相關(guān)信息等,用于服務(wù)器端信息認(rèn)證。
?數(shù)字證書認(rèn)證:驗(yàn)證服務(wù)器端證書有效性,防護(hù)中間人劫持。
?網(wǎng)絡(luò)封包:將前端頁面提交到服務(wù)器端的數(shù)據(jù),通過SDK進(jìn)行封包處理,
由SDK發(fā)送至服務(wù)器端,獲取返回信息后,再由前端頁面顯示。
?SDK加固:SDK在發(fā)布時(shí),應(yīng)對(duì)自身進(jìn)行代碼混淆處理。
第三方接入應(yīng)用在訪問相關(guān)業(yè)務(wù)時(shí),應(yīng)完成授權(quán)流程并嵌入SDK完成業(yè)務(wù)接
入。對(duì)于無法嵌入SDK的應(yīng)用,如“微信”應(yīng)用,應(yīng)通過業(yè)務(wù)應(yīng)用管理進(jìn)行風(fēng)險(xiǎn)
防范。
?在此種業(yè)務(wù)場景下不開展“資金交易”等重要業(yè)務(wù),以防止中間人攻擊,
對(duì)請(qǐng)求進(jìn)行非法篡改。
?不應(yīng)支持展示包含“高級(jí)別敏感信息”頁面和相關(guān)請(qǐng)求,防范敏感信息泄
露。
5.2客戶端程序安全
5.2.1客戶端程序保護(hù)
客戶端程序應(yīng)具備抗逆向分析、完整性校驗(yàn)等安全機(jī)制:
方案一方案二
?代碼混淆對(duì)客戶端程序進(jìn)行加殼,提供
?具備運(yùn)行時(shí)檢查機(jī)制,防止抗逆向分析、代碼保護(hù)、資源
攻擊者對(duì)應(yīng)用程序進(jìn)行動(dòng)態(tài)加密等保護(hù)。
調(diào)試
?具備簽名驗(yàn)證機(jī)制
技術(shù)措施
?對(duì)于AndroidAPP的重要
操作Activity,防范
Activity劫持
?對(duì)于敏感信息的輸入(如密
碼),使用自定義隨機(jī)鍵盤防
范鍵盤劫持。
5.2.2客戶端程序簽名
客戶端應(yīng)用程序以及升級(jí)程序在發(fā)布時(shí),使用簽名專用證書對(duì)應(yīng)用程序進(jìn)行
簽名,保證來源可靠性,
?對(duì)應(yīng)用程序、更新程序、代碼文件進(jìn)行簽名,保證應(yīng)用程序完整性,其
中簽名文件必須是自己的簽名,禁止使用第三方簽名。
?應(yīng)用程序啟動(dòng)、更新時(shí),客戶端應(yīng)檢查升級(jí)包的簽名是否合法,如果簽
名相同,則進(jìn)行后續(xù)操作;否則,應(yīng)提示用戶存在風(fēng)險(xiǎn),并終止升級(jí)過
程。
5.2.3移動(dòng)客戶端運(yùn)行環(huán)境安全
當(dāng)用戶設(shè)備處于root狀態(tài)下,APP的私有目錄/data/data/$package_
name是可以被任意訪問的,當(dāng)一些惡意程序在獲取root權(quán)限后,就可利用賦
予的權(quán)限來竊取用戶的隱私信息(如短信息、用戶鍵盤輸入等),或者通過遍
歷客戶端的私有目錄獲取用戶的私有信息。因此,系統(tǒng)在啟動(dòng)或者進(jìn)行敏感操
作時(shí),應(yīng)給予處于root狀態(tài)的設(shè)備用戶風(fēng)險(xiǎn)提示。在客戶端應(yīng)用啟動(dòng)時(shí),應(yīng)判
斷系統(tǒng)是否已root或者越獄,并給予用戶提示風(fēng)險(xiǎn)。
1.Android設(shè)備root狀態(tài)檢測
可通過檢查如下文件列表中的文件是否存在來檢測設(shè)備的root狀態(tài):
/system/bin/su
/system/xbin/su
/system/sbin/su
/sbin/su
/vendor/bin/su
2.iOS設(shè)備越獄狀態(tài)檢測
可通過判斷設(shè)備中是否存在Cydia.app>MobileSubstrate.dylib^bash>
apt、sshd等文件來檢測iOS設(shè)備的越獄狀態(tài),具體文件所存放的目錄如下
表所示:
/Applications/Cydia.app
/Library/MobileSubstrate/MobilcSubstrate.dylib
/bin/bash
/usr/sbin/sshd
/etc/apt
5.2.4數(shù)據(jù)存儲(chǔ)安全
為防范敏感信息和重要信息等用戶的隱私數(shù)據(jù)泄露,客戶端應(yīng)用程序應(yīng)嚴(yán)格
限定客戶端敏感數(shù)據(jù)存儲(chǔ)。
(1)客戶端應(yīng)用中禁止以任何形式保存敏感信息(如明文密碼),包括
但不限于代碼、內(nèi)存、本地文件和本地?cái)?shù)據(jù)庫;
(2)對(duì)于重要信息,原則上應(yīng)存儲(chǔ)于內(nèi)存中,僅在應(yīng)用運(yùn)行生命周期內(nèi)有效;
(3)如果客戶端需要存儲(chǔ)重要信息與文件或者本地?cái)?shù)據(jù)庫中,應(yīng)使用對(duì)稱加密
算法對(duì)數(shù)據(jù)進(jìn)行加密存儲(chǔ),由于加密密鑰不能在客戶端明文保存,需要使用客
戶端數(shù)字證書公鑰加密或者保存在服務(wù)器端:
客戶端使用用戶數(shù)字證書,具體實(shí)現(xiàn)流程如下:
1)用戶登錄系統(tǒng),完成身份認(rèn)證;
2)使用用戶數(shù)字證書私鑰對(duì)本地存儲(chǔ)的加密密鑰解密;
3)使用解密后亡勺加密密鑰對(duì)數(shù)據(jù)解密。
客戶端沒有用戶數(shù)字證書:
1)用戶登錄系統(tǒng),完成身份認(rèn)證;
2)與服務(wù)器端完成握手,獲取密鑰對(duì)本地存儲(chǔ)的加密的密鑰進(jìn)行解密;
3)使用解密后的加密密鑰對(duì)數(shù)據(jù)解密。
2.對(duì)于Android客戶端應(yīng)用,在本地文件或者本地?cái)?shù)據(jù)庫中存儲(chǔ)重要信息時(shí),
應(yīng)嚴(yán)格限制Activity、Service、BroadcastReceiver、Content
Provider的訪問權(quán)限,不需要對(duì)外部應(yīng)用提供服務(wù)時(shí),應(yīng)關(guān)閉導(dǎo)出接口,
將exported屬性設(shè)置為false。
5.2.5數(shù)據(jù)交互安全
敏感數(shù)據(jù)輸入保護(hù)
對(duì)于用戶在客戶端程序中輸入的敏感信息,包幫但不限于用戶密碼、交易密碼、
手勢密碼等,均應(yīng)對(duì)數(shù)據(jù)進(jìn)行安全保護(hù)。
(1)對(duì)于用戶輸入的敏感信息及重要信息,客戶端程序應(yīng)采取安全措施防止數(shù)據(jù)
被竊取,使用軟鍵盤輸入控件保護(hù)用戶輸入的敏感信息及重要信息,密碼鍵盤需滿足
如下要求:
1)鍵盤鍵位隨機(jī)布局。
2)不回顯用戶輸入,通過聲音或者震動(dòng)的方式給予用戶反饋。
3)用戶輸入字符經(jīng)過對(duì)稱加密處理后再存放于內(nèi)存中,加密密鑰從服務(wù)器端
獲取。
4)防截屏惡意程序:應(yīng)用程序應(yīng)具備防范截屏惡意代碼的功能,避免攻擊者
通過屏幕截取獲得用戶密碼等敏感信息.
(2)客戶端應(yīng)用程序在重新切入時(shí),應(yīng)校驗(yàn)手勢密碼(由于手勢密碼易被破解,
結(jié)合業(yè)界實(shí)踐,建議手勢密碼僅用于應(yīng)用屏幕解鎖功能),防止用戶信息泄露,手勢
密碼應(yīng)滿足如下安全要求:
1)在設(shè)置手勢密碼時(shí),應(yīng)檢測手勢密碼的強(qiáng)度,至少包含3個(gè)鍵位。
2)鍵位相關(guān)數(shù)據(jù)應(yīng)先進(jìn)行哈希處理再存儲(chǔ)在客戶端。
3)手勢密碼軟鍵盤在劃過時(shí),應(yīng)不顯示軌跡,以震動(dòng)的方式給予用戶輸入反
饋。
數(shù)據(jù)操作安全
對(duì)于用戶輸入數(shù)據(jù),為保證用戶的友好體驗(yàn),客戶端配合服務(wù)器端對(duì)數(shù)據(jù)合法性
進(jìn)行驗(yàn)證,最終的數(shù)據(jù)安全校驗(yàn)應(yīng)由服務(wù)器端完成。
(1)對(duì)于可枚舉數(shù)據(jù)格式,客戶端應(yīng)校驗(yàn)數(shù)據(jù)格式的合法性。
(2)客戶端應(yīng)對(duì)用戶輸入數(shù)據(jù)的安全邊界進(jìn)行檢查,如整型數(shù)據(jù)的大小,字符串
類型數(shù)據(jù)的長度。
5.2.6資源管理
客戶端在資源操作結(jié)束時(shí),如內(nèi)存操作、文件操作等,應(yīng)釋放資源防止客戶端資
源泄漏。
5.3通信安全
5.3.1SSL/TLS安全配置
涉及敏感信息和重要信息傳輸?shù)目蛻舳撕头?wù)器端通信過程,應(yīng)使用https安
全通信協(xié)議或參考TLS協(xié)議建立安全信道,保障通信安全,數(shù)字證書以及所采取的
協(xié)議應(yīng)滿足如下要求:
(1)數(shù)字證書安全
1)數(shù)字證書由可信CA簽發(fā);
2)RSA算法密鑰長度至少為2048bit;
3)保證簽名算法的強(qiáng)度,禁止使用SHA1的SSL證書,正在使用的SHA1
證書建議將算法升級(jí)至S11A256;
4)私鑰應(yīng)在可信安全主機(jī)生成,當(dāng)私鑰被泄露時(shí),應(yīng)立即重新生成私鑰并
替換舊私鑰;
5)自簽名的證書為用戶產(chǎn)生的證書,沒有在權(quán)威機(jī)構(gòu)(CA)注冊過,不能
確保它的真實(shí)性,但可以保證數(shù)據(jù)傳輸?shù)陌踩?,因此只能用作加密?/p>
不能用于身份認(rèn)證。
(2)協(xié)議安全
1)使用安全的協(xié)議,禁止使用SSLv2和v3,建議使用TLSvl.2;
2)使用安全的加密套件:
a)對(duì)稱加密密鑰建議長度為128位以上;
b)禁止使用RC4加密算法;
c)禁用MD5、SHA1哈希算法。
5.3.2客戶端證書有效性校驗(yàn)
移動(dòng)客戶端和服務(wù)特端通信時(shí),應(yīng)首先校驗(yàn)服務(wù)器端證書的有效性,防止中
間人攻擊導(dǎo)致敏感數(shù)據(jù)泄露。
(1)基于瀏覽器校驗(yàn)證書的行為,證書需要采用權(quán)威機(jī)構(gòu)(CA)認(rèn)證的證
書,自有證書瀏覽器無法通過校驗(yàn);
(2)移動(dòng)端APP按照以下要求進(jìn)行校驗(yàn):
?客戶端校驗(yàn)完整的證書鏈,驗(yàn)證服務(wù)端證書是否合法,是否在有效期
內(nèi),域名信息是否和實(shí)際信息一致。
?如果服務(wù)端使用自簽名的證書,應(yīng)在客戶端預(yù)植CA根證書或服務(wù)器端
數(shù)字證書,在通信時(shí)校驗(yàn)服務(wù)器端證書的有效性,確保通信安全。
?當(dāng)使用內(nèi)置的瀏覽器組件(如移動(dòng)APP的WebView組件)加載https
頁面時(shí),如發(fā)生證書認(rèn)證錯(cuò)誤,應(yīng)直接終止頁面的加載。
5.3.3數(shù)據(jù)傳輸安全
(1)對(duì)于涉及敏感信息和重要信息傳輸?shù)膽?yīng)用系統(tǒng),應(yīng)配置完善的基于服
務(wù)器證書單向認(rèn)證的TLS安全信道,保證通信數(shù)據(jù)的安全性。
a)客戶端驗(yàn)證服務(wù)器端證書有效性,防護(hù)中間人攻擊。
b)在單向認(rèn)證的TLS安全信道基礎(chǔ)上,基于數(shù)字證書遵循TLS協(xié)議標(biāo)準(zhǔn)
實(shí)現(xiàn)雙向認(rèn)證的安全信道建立和數(shù)據(jù)加密C
c)在應(yīng)用系統(tǒng)中提交重要操作時(shí),結(jié)合業(yè)務(wù)場景,在客戶端使用數(shù)字證書
對(duì)傳輸?shù)牟僮鲾?shù)據(jù)簽名,在服務(wù)器端驗(yàn)證簽名的有效性,以保證數(shù)據(jù)的
完整性。
5.4服務(wù)器端安全
5.4.1SDK授權(quán)
為合作的第三方渠道提供嵌套運(yùn)行的SDK時(shí),應(yīng)嚴(yán)格依照授權(quán)流程,對(duì)第
三方公司進(jìn)行授權(quán)。
外部接入的客戶端程序在接入時(shí),服務(wù)器端應(yīng)驗(yàn)證SDK授權(quán)的合法性。
對(duì)于應(yīng)用客戶端直接接入服務(wù)器的模式,驗(yàn)證流程如下:
(1)客戶端獲取自身標(biāo)識(shí),標(biāo)識(shí)由與第二方公司共同定義,由授權(quán)碼、
應(yīng)用包名以及應(yīng)用簽名組成,提交至服務(wù)器端。
(2)服務(wù)器端接收到授權(quán)請(qǐng)求,驗(yàn)證標(biāo)識(shí)是否為合法的第三方應(yīng)用授權(quán)。
(3)若為合法授權(quán)應(yīng)用,則建立通信信道,與客戶端通信,否則,終端
通信連接。
若移動(dòng)應(yīng)用客戶端通過第三方運(yùn)營服務(wù)器與服務(wù)器對(duì)接,應(yīng)做到如下安全控
制:
(1)第三方合作公司應(yīng)保證客戶端有效性的驗(yàn)證。
(2)第三方合作公司應(yīng)保證授權(quán)標(biāo)識(shí)不被泄露,包括但不限于授權(quán)碼、授
權(quán)及簽名相關(guān)私鑰。
(3)第三方應(yīng)用服務(wù)器將數(shù)據(jù)轉(zhuǎn)發(fā)至服務(wù)器端時(shí),應(yīng)保證數(shù)據(jù)的安全性。
(4)服務(wù)器端在接收第三方應(yīng)用服務(wù)器請(qǐng)求時(shí),驗(yàn)證是否為合法授權(quán),請(qǐng)
求的有效性。
5.4.2身份安全認(rèn)證
會(huì)話安全
(1)Session安全管理
?Session應(yīng)具備超時(shí)機(jī)制,會(huì)話超時(shí)時(shí)間由業(yè)務(wù)系統(tǒng)定義u如果用戶一
定時(shí)間無任何操作,服務(wù)器端應(yīng)注銷用戶會(huì)話。
?用戶登錄時(shí),應(yīng)生成新的SessionID。
?用戶登錄并建立一個(gè)會(huì)話時(shí),若發(fā)現(xiàn)此用戶有舊會(huì)話,建議注銷舊會(huì)
話。
(2)會(huì)話綁定
在用戶登錄、修改密碼、交易等重要操作場景,對(duì)用戶會(huì)話下用戶的設(shè)備信息是
否變化做判斷。
(1)基于設(shè)備指紋實(shí)現(xiàn)的會(huì)話綁定技術(shù)驗(yàn)證邏輯
1)客戶端在發(fā)起重要業(yè)務(wù)請(qǐng)求時(shí),攜帶獲取到的設(shè)備指紋發(fā)送到服務(wù)器端,
服務(wù)器端驗(yàn)證客戶端設(shè)備指紋,判斷當(dāng)前用戶請(qǐng)求是否合法:
a)若當(dāng)前會(huì)話下存在設(shè)備指紋,則進(jìn)行校驗(yàn),若不匹配,則可判定為不
合法請(qǐng)求,要求用戶重新登錄,登錄后重新綁定設(shè)備指紋;
b)若當(dāng)前會(huì)話下不存在設(shè)備指紋,則判斷用戶是否處于登錄狀態(tài),若處
于已登錄狀態(tài),則屬于不合法請(qǐng)求,要求用戶重新登錄,登錄后重新
綁定設(shè)備指紋;
c)若用戶發(fā)起登錄請(qǐng)求,服務(wù)器端未存儲(chǔ)用戶設(shè)備指紋信息,則登錄后
綁定設(shè)備指紋。
2)當(dāng)前會(huì)話下,如果客戶端設(shè)備信息發(fā)生變化時(shí),應(yīng)強(qiáng)制注銷當(dāng)前會(huì)話。
(2)獲取設(shè)備指紋信息的方法
1)對(duì)于Android客戶端應(yīng)用,可通過設(shè)備中獲取的deviceID^Pscudo-
L'niqueID>mac地址、cpunumber>系統(tǒng)版本等信息進(jìn)行計(jì)算(hash處
理)得到唯一標(biāo)識(shí)字符串,然后與用戶會(huì)話綁定。
2)對(duì)于iOS客戶端應(yīng)用,可通過獲取IDFA、IDFV、UDID、系統(tǒng)版本號(hào)等設(shè)
備標(biāo)識(shí),然后經(jīng)過計(jì)算(hash處理)后得到唯一標(biāo)識(shí)字符串,然后與服務(wù)
器端用戶會(huì)話進(jìn)行綁定。
對(duì)于web應(yīng)用,可通過瀏覽器的信息(如:UserAgent、語言、顏色深度、
屏幕分辨率、時(shí)區(qū)、是否具有會(huì)話存儲(chǔ)、是否具有本地存儲(chǔ)、是否具有索引
DB>IE是否指定AddBehavior>是否有打開的DB、CPU類型、平臺(tái)、是否
DoNotTrack>已安裝的Flash字體列表、Canvas指紋、WebGL指紋、瀏覽
器的插件信息、是否安裝AdBlock等)計(jì)算哈希,得到用戶瀏覽器端的唯一標(biāo)
識(shí)與當(dāng)前用戶會(huì)話進(jìn)行綁定,防止會(huì)話盜用。
(3)防會(huì)話重放
目前有效的防會(huì)話重放的方式有序列號(hào)、時(shí)間戳、HMAC挑戰(zhàn)應(yīng)答認(rèn)證方
法,應(yīng)用系統(tǒng)在設(shè)計(jì)時(shí),根據(jù)業(yè)務(wù)系統(tǒng)設(shè)計(jì)需求進(jìn)行選擇。
(1)對(duì)于一般重要場景,可采用序列號(hào)、時(shí)間戳方式防會(huì)話重放。
I)序列號(hào)
a)通信雙方在初次建立通信時(shí)協(xié)商一對(duì)初始序列號(hào),并約定序列號(hào)遞增
算法(如序列號(hào)+1);
b)客戶端每次發(fā)起請(qǐng)求時(shí),通過約定算法對(duì)序列號(hào)處理,把序列號(hào)和業(yè)
務(wù)數(shù)據(jù)一起發(fā)送給服務(wù)器端,服務(wù)器端通過本地存儲(chǔ)的序列號(hào)經(jīng)過運(yùn)
算后與客戶端請(qǐng)求序列號(hào)進(jìn)行對(duì)比驗(yàn)證;
c)驗(yàn)證通過后,進(jìn)行業(yè)務(wù)操作;
d)客戶端也用同樣的方式驗(yàn)證服務(wù)器端的響應(yīng)序列號(hào)。
2)時(shí)間戳
a)客戶端每次發(fā)起請(qǐng)求時(shí),獲得系統(tǒng)時(shí)間戳,把時(shí)間戳和業(yè)務(wù)數(shù)據(jù)一起
發(fā)送給服務(wù)器端。
b)服務(wù)器端獲得系統(tǒng)時(shí)間戳,跟客戶端發(fā)送過來的時(shí)間戳做對(duì)比,如果
時(shí)間差在指定的范圍內(nèi),則驗(yàn)證通過。
(2)對(duì)于安全級(jí)別較高的業(yè)務(wù)操作(如轉(zhuǎn)賬、交易等請(qǐng)求),應(yīng)使用數(shù)字
證書和隨機(jī)字符串簽名做挑戰(zhàn)應(yīng)答的方式防護(hù)重放攻擊,如果不能應(yīng)用數(shù)字
證書,建議使用EMAC挑戰(zhàn)應(yīng)答的方式,保證提交數(shù)據(jù)的安全
HMAC的一個(gè)典型應(yīng)用是用在“挑戰(zhàn)/應(yīng)答”(Challenge/Response)身份認(rèn)
證中。以登錄為例,認(rèn)證流程如下:
1)先由客戶端向服務(wù)器發(fā)出一個(gè)驗(yàn)證請(qǐng)求。
2)服務(wù)器接到此請(qǐng)求后生成一個(gè)隨機(jī)數(shù)并通過網(wǎng)絡(luò)傳輸給客戶端(此為挑
戰(zhàn))。
3)客戶端將收到的隨機(jī)數(shù)作為密鑰(K),對(duì)用戶數(shù)據(jù)(text)進(jìn)行hraac
運(yùn)算,然后將運(yùn)算結(jié)果作為認(rèn)證提交給服務(wù)器端(此為應(yīng)答)。
4)與此同時(shí),服務(wù)器也使用該隨機(jī)數(shù)與存儲(chǔ)在服務(wù)器數(shù)據(jù)庫中的該客戶數(shù)
據(jù)進(jìn)行HMAC運(yùn)算,如果服務(wù)器的運(yùn)算結(jié)果與客戶端傳回的響應(yīng)結(jié)果相同,
則認(rèn)為客戶端是一個(gè)合法用戶。
(4)用戶認(rèn)證嘗試超限鎖定
應(yīng)用系統(tǒng)應(yīng)具備用戶認(rèn)證失敗處理機(jī)制,同時(shí)提供嘗試次數(shù)參數(shù)設(shè)定功能,在
用戶身份認(rèn)證(登錄、密碼重置等)、交易等重要業(yè)務(wù)場景下,對(duì)密碼輸入借誤嘗
試次數(shù)進(jìn)行限制,用戶認(rèn)證超限鎖定應(yīng)滿足如下要求:
?把用戶的session與高危業(yè)務(wù)、嘗試次數(shù)、鎖定時(shí)間進(jìn)行關(guān)聯(lián),形成映
射關(guān)系表進(jìn)行俁存。
?單位時(shí)間內(nèi)(如1小時(shí))用戶身份認(rèn)證嘗試失敗超過指定次數(shù)(建設(shè)不
超過5次)時(shí),進(jìn)行用戶鎖定,鎖定時(shí)間不低于10分鐘。
5.4.3短信驗(yàn)證碼安全
對(duì)于使用短信驗(yàn)證碼作為雙因素認(rèn)證的業(yè)務(wù)場景,為了保證用戶的體驗(yàn)以及系
統(tǒng)的安全性,應(yīng)滿足如下要求:
(1)短信驗(yàn)證碼長度不低于6位。
(2)為防止短信炸彈攻擊,應(yīng)該限制短信驗(yàn)證碼的發(fā)送時(shí)間間隔和次數(shù),建
議間隔時(shí)間大于60s,每小時(shí)內(nèi)對(duì)同一個(gè)手機(jī)號(hào)發(fā)送短信的次數(shù)不超過3次。
(3)應(yīng)該規(guī)定短信驗(yàn)證碼的有效時(shí)間和輸入錯(cuò)誤次數(shù),通常情況下有效時(shí)間
不長于60s,輸入錯(cuò)誤次數(shù)不高于3次,超出后立即清空驗(yàn)證碼0
(4)程序應(yīng)該判斷短信驗(yàn)證碼的發(fā)送手機(jī)號(hào)是否為用戶綁定的手機(jī)號(hào)碼。
(5)短信驗(yàn)證碼一次有效,在驗(yàn)證通過后,應(yīng)立即清空服務(wù)器端會(huì)話中保存
的驗(yàn)證碼。
5.4.4訪問控制
5.4.4.1權(quán)限控制
(1)權(quán)限控制要求
1)對(duì)于客戶端發(fā)送的業(yè)務(wù)請(qǐng)求,服務(wù)器端應(yīng)判斷當(dāng)前登錄用戶對(duì)請(qǐng)求資源
的訪問權(quán)限進(jìn)行驗(yàn)證;
a)驗(yàn)證當(dāng)前登錄用戶是否具有請(qǐng)求url的訪問權(quán)限;
b)驗(yàn)證當(dāng)前登錄用戶是否具有對(duì)提交的請(qǐng)求參數(shù)的訪問及控制權(quán)限,如
操作識(shí)別碼,操作數(shù)據(jù)等。
2)權(quán)限控制標(biāo)識(shí)必須存儲(chǔ)在可信數(shù)據(jù)源中,如session、數(shù)據(jù)庫、配置
文件。
(2)授權(quán)管理要求
1)依據(jù)最小授權(quán)原則,系統(tǒng)對(duì)用戶應(yīng)在其業(yè)務(wù)功能范圍內(nèi)分配最小權(quán)限;
2)依據(jù)權(quán)限分離原則,將用戶管理和用戶授權(quán)進(jìn)行權(quán)限分離,由不同的操
作用戶承擔(dān),防止權(quán)限濫用。
a)管理權(quán)限用戶所進(jìn)行的操作,應(yīng)由業(yè)務(wù)授權(quán)用戶進(jìn)行授權(quán)后才可生
效;
b)業(yè)務(wù)授權(quán)用戶不具備管理權(quán)限。
5.4.5應(yīng)用接口安全
應(yīng)用程序通過接口為外部系統(tǒng)提供數(shù)據(jù)服務(wù)時(shí),應(yīng)對(duì)接口訪問進(jìn)行控制,
(1)用戶服務(wù)接口驗(yàn)證調(diào)用者的身份及權(quán)限,判斷訪問者是否具有接口的訪問權(quán)
限以及對(duì)請(qǐng)求數(shù)據(jù)的操作權(quán)限(判斷請(qǐng)求數(shù)據(jù)是否屬于當(dāng)前登錄用戶)。
(2)對(duì)接口訪問頻率進(jìn)行限制,防止惡意攻擊堵塞接口。
5.4.6數(shù)據(jù)交互安全
SQL注入攻擊防護(hù)
應(yīng)用程序在進(jìn)行數(shù)據(jù)庫操作時(shí),原則上禁止通過參數(shù)拼接的方式編寫SQL
語句,防范SQL注入攻擊。
(1)對(duì)于包含用戶提交參數(shù)的SQL語句應(yīng)通過參數(shù)化查詢的方式進(jìn)行處理;
(2)對(duì)于確需采取拼接進(jìn)SQL語句的參數(shù),應(yīng)對(duì)傳入的數(shù)據(jù)依據(jù)數(shù)據(jù)庫類
型進(jìn)行有針對(duì)性的轉(zhuǎn)義處理。
5.4.6.2跨站腳本攻擊防護(hù)
對(duì)于服務(wù)器端輸出到瀏覽器端的數(shù)據(jù),應(yīng)依據(jù)數(shù)據(jù)輸出到頁面的不同場景進(jìn)
行針對(duì)性的編碼處理,防范跨站腳本攻擊對(duì)用戶造成的影響。具體處理方式如下表所
不O
上下文場景編碼處理
輸出到HTML標(biāo)簽之間的數(shù)據(jù)調(diào)用EncodeXss.encodelltml方法對(duì)輸出數(shù)據(jù)
做IIT
ML實(shí)體編碼處理
輸出到HTML標(biāo)簽的屬性值的調(diào)用EncodeXss.encodeForlltmlAttr方法對(duì)
數(shù)輸出數(shù)
據(jù)據(jù)進(jìn)行轉(zhuǎn)義處理
輸出到JavaScript數(shù)據(jù)域中調(diào)用EncodeXss.encodeJS方法對(duì)輸出數(shù)據(jù)
的數(shù)進(jìn)行Jav
據(jù)aScript轉(zhuǎn)義
輸出到URL參數(shù)中的數(shù)據(jù)調(diào)用EncodeXss.encodeURL方法對(duì)輸出數(shù)據(jù)
做UR
L編碼處理
輸出到XML節(jié)點(diǎn)及節(jié)點(diǎn)屬性調(diào)用EncodeXss.encodeXML方法對(duì)輸出的數(shù)據(jù)
值中做編
的數(shù)據(jù)碼處理,防范XML注入
輸出到CSS樣式表中的數(shù)據(jù)調(diào)用EncodeXss.encodeCSS方法對(duì)輸出的數(shù)據(jù)
做轉(zhuǎn)
義處理
為不影響用戶體驗(yàn)以及保證安全,調(diào)用
輸入為富文本內(nèi)容的數(shù)據(jù)CleanRichHt
ml.cleanSafeHtml方法對(duì)輸入的富文本內(nèi)容
做過濾處
理
5.463上傳文件安全
對(duì)于提供文件上傳功能的應(yīng)用,應(yīng)保證上傳文件格式的合法性以及文件存儲(chǔ)
的安全性。上傳文件的合法性校驗(yàn)由服務(wù)器端實(shí)現(xiàn),防止繞過客戶端程序校驗(yàn)機(jī)制上
傳惡意文件。
(1)上傳文件合法性校驗(yàn)
I)明確允許上傳文件的格式、文件大小、允許上傳文件類型,對(duì)上傳文件的
合法性進(jìn)行基礎(chǔ)校驗(yàn)。
2)對(duì)于特定格式的文件,可依據(jù)文件的特性進(jìn)行有針對(duì)性的校驗(yàn)。如:若上
傳文件為圖片格式,可通過獲取圖片文件的長寬像素值來判斷上傳圖片文
件是否合法。
3)結(jié)合業(yè)務(wù)需求,對(duì)文件格式、內(nèi)容可進(jìn)行增強(qiáng)安全校驗(yàn)。
(2)文件安全存儲(chǔ)
1)將上傳文件隨機(jī)重命名或在源文件名后增加隨機(jī)數(shù)進(jìn)行重命名后再進(jìn)行
保存;
2)上傳文件應(yīng)存放于中間件不做腳本解析的目錄(如web應(yīng)用程序之外的目
錄或獨(dú)立的文件服務(wù)器),防止中間件對(duì)上傳的文件解析執(zhí)行。
3)上傳文件禁止具有可執(zhí)行權(quán)限。
5.4.6.4防范路徑遍歷攻擊
在文件下載或者文件查看等功能時(shí),應(yīng)通過映射文件路徑或者判斷請(qǐng)求下載
文件的真實(shí)路徑是否合法來保證服務(wù)器端文件訪問的安全性,防范攻擊者通過路
徑遍歷攻擊的方式獲取系統(tǒng)敏感數(shù)據(jù)。
(1)映射文件路徑下載文件
1)在文件上傳時(shí),將文件保存的路徑存儲(chǔ)于數(shù)據(jù)表中,使用1D與文件路
徑建立映射關(guān)系;
2)在用戶請(qǐng)求卜載文件時(shí),在請(qǐng)求參數(shù)中攜帶文件ID,服務(wù)器端根據(jù)文件
ID來獲取真實(shí)的文件路徑,然后將文件內(nèi)容返回客戶端;
3)為防范攻擊者通過遍歷文件1D參數(shù)的方式下載所有文件,文件1D應(yīng)設(shè)
計(jì)為通用唯一識(shí)別碼(UUID)格式。
(2)文件真實(shí)路徑判斷
在用戶請(qǐng)求下載文件時(shí),服務(wù)器端判斷請(qǐng)求文件的真實(shí)路徑是否屬丁服務(wù)器
端指定保存文件的路徑來判斷下載請(qǐng)求的合法性。
5.4.6.5防范XML注入攻擊
(1)防范XML數(shù)據(jù)注入
從請(qǐng)求參數(shù)中獲取數(shù)據(jù),拼接進(jìn)XML數(shù)據(jù)的節(jié)點(diǎn)或節(jié)點(diǎn)屈性值中進(jìn)行處理時(shí),
應(yīng)對(duì)輸入輸出的XML數(shù)據(jù)進(jìn)行輸出轉(zhuǎn)義。
防范XML外部
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版不銹鋼宣傳欄安裝工程合同變更合同2篇
- 2025年消防器材采購與倉儲(chǔ)配送合同協(xié)議3篇
- 2025年旋挖鉆機(jī)購銷及智能化升級(jí)改造合同3篇
- 2025年無財(cái)產(chǎn)債務(wù)家庭子女生活費(fèi)用及教育補(bǔ)貼協(xié)議3篇
- 二零二五版采砂船運(yùn)輸安全責(zé)任合同范本3篇
- 2025年汽車改裝合同范本3篇
- 基于物聯(lián)網(wǎng)的2025年度物業(yè)管理信息系統(tǒng)構(gòu)建合同3篇
- 2025年上半年遼寧省鞍山岫巖滿族自治縣事業(yè)單位招聘150人聘用重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2025年上半年遼寧省沈陽于洪區(qū)派遣制政府雇員招聘33人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年赤峰新正電工技術(shù)服務(wù)限公司社會(huì)招聘66人(內(nèi)蒙古)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 電梯曳引機(jī)生銹處理方案
- 電力電纜故障分析報(bào)告
- 中國電信網(wǎng)絡(luò)資源管理系統(tǒng)介紹
- 2024年浙江首考高考選考技術(shù)試卷試題真題(答案詳解)
- 《品牌形象設(shè)計(jì)》課件
- 倉庫管理基礎(chǔ)知識(shí)培訓(xùn)課件1
- 藥品的收貨與驗(yàn)收培訓(xùn)課件
- GH-T 1388-2022 脫水大蒜標(biāo)準(zhǔn)規(guī)范
- 高中英語人教版必修第一二冊語境記單詞清單
- 政府機(jī)關(guān)保潔服務(wù)投標(biāo)方案(技術(shù)方案)
- HIV感染者合并慢性腎病的治療指南
評(píng)論
0/150
提交評(píng)論