H5 應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案_第1頁
H5 應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案_第2頁
H5 應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案_第3頁
H5 應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案_第4頁
H5 應(yīng)用安全風(fēng)險(xiǎn)分析與加固方案_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論