保護您的Android應(yīng)用程序:Android應(yīng)用程序安全一覽
我們都知道Android是為所有人設(shè)計的——開放、面向開發(fā)者、面向用戶,這種開放性為今天和明天的移動技術(shù)提供了很多便利。然而,開放性也帶來了需要妥善處理的安全風險。
安全是我們所有人都關(guān)注的重要問題。無論是我們的個人數(shù)據(jù)、電子郵件、電話號碼、憑證、服務(wù)器之間的通信、固件等,我們都希望保護我們的信息安全。
作為Android開發(fā)者,您必須從頭開始考慮安全性來構(gòu)建應(yīng)用程序。用戶信任您的應(yīng)用程序處理敏感數(shù)據(jù),并期望其隱私和安全得到尊重。
在本博客中,我將介紹在開發(fā)Android應(yīng)用程序時在安全方面應(yīng)遵循的基本原則和最佳實踐。
讓我們繼續(xù)探討您的Android應(yīng)用程序應(yīng)該實施哪些安全措施:
- 保護應(yīng)用程序和用戶數(shù)據(jù)
- 保護系統(tǒng)資源(包括網(wǎng)絡(luò))
- 將應(yīng)用程序與系統(tǒng)、其他應(yīng)用程序和用戶隔離開來
安全編碼實踐
作為開發(fā)者,在構(gòu)建應(yīng)用程序時,我們有意或無意地遵循某些實踐來考慮安全性。雖然有許多具體的情況可以深入探討,但我將介紹一些基本原則:
-
訪問控制
訪問控制是應(yīng)用程序安全的基本方面,對保護敏感數(shù)據(jù)和確保只有授權(quán)用戶可以與應(yīng)用程序或其資源進行交互起著關(guān)鍵作用。 -
密碼管理
采用多因素身份驗證和其他現(xiàn)代密碼管理實踐可以增強安全性,防止釣魚,實現(xiàn)安全遠程訪問,并限制數(shù)據(jù)泄露的影響。 -
錯誤處理和日志記錄
這些是應(yīng)用程序安全的組成部分,通常被忽視。仔細考慮要記錄什么以及如何測量正確的錯誤事件有助于您快速識別、減輕和響應(yīng)安全事件。確保不記錄暴露給錯誤發(fā)生的敏感數(shù)據(jù)。 -
系統(tǒng)配置
清理系統(tǒng)中所有不必要的文件、文件夾和不可用的項目組件,并確保所有正在使用的軟件都已更新為最新版本和補丁。在進入Google Play商店發(fā)布之前,確保您的開發(fā)和生產(chǎn)環(huán)境的安全性。在開發(fā)平臺及其修補程序的最新版本上進行工作。
軟件更新包括修復(fù)漏洞的補丁,使定期更新成為最重要的安全編碼實踐之一。這種做法可以幫助您的業(yè)務(wù)保持更新。
-
威脅建模(文檔化、定位、解決和驗證)
在設(shè)計系統(tǒng)架構(gòu)時會分析某些方面,特別是評估存在哪些潛在威脅以及它們的利用會產(chǎn)生多大影響。威脅建模是一個多階段的過程,應(yīng)該在開發(fā)生命周期的不同階段中進行整合,但理想情況下,您應(yīng)該在規(guī)劃階段準備一個威脅模型,并在整個軟件開發(fā)生命周期中不斷完善,例如記錄威脅、定位威脅、解決威脅和驗證威脅。 -
密碼學(xué)實踐
有許多密碼學(xué)方法,每種方法都有其優(yōu)缺點。目標是選擇適合您特定安全需求的方法,將其作為附加控制而不是唯一的控制,并隨時間不斷審查和升級,而不是盲目地依賴它而不進行漏洞測試。以下是您可能希望了解的詳細信息。您可能已經(jīng)遵循其中的一些方法——對其進行完善。 -
輸入驗證
曾經(jīng)想過用戶輸入的任何誤導(dǎo)性數(shù)據(jù)是否會破壞我們的安全屏障?為了解決這個問題,不僅需要了解要驗證的內(nèi)容,還需要了解如何有效地進行驗證。以下是確保強大輸入驗證的關(guān)鍵要點:
- 應(yīng)用程序的集中式輸入驗證例程
- 預(yù)期的數(shù)據(jù)類型
- 數(shù)據(jù)范圍/數(shù)據(jù)長度
- 驗證重定向的數(shù)據(jù)
- 任何驗證失敗都應(yīng)導(dǎo)致輸入被拒絕;在編程世界中從不做任何假設(shè)。
牢記的最佳實踐
- 禁止訪問應(yīng)用程序的內(nèi)容提供程序
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false" <!-- 包含的關(guān)鍵點 -->
android:grantUriPermissions="true">
<!-- 示例元數(shù)據(jù) -->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
- 配置網(wǎng)絡(luò)安全
在不更改任何應(yīng)用程序代碼的情況下,可以按照以下步驟進行:
- 在
manifest.xml
文件中聲明您的文件。
<manifest ... >
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
<!-- 在這里放置<application>元素的子元素。 -->
</application>
</manifest>
-
network_security_config
文件中包含什么內(nèi)容?
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
...
</domain-config>
</network-security-config>
這會強制僅使用HTTPS內(nèi)容。此外,在開發(fā)過程中,您可以選擇允許用戶安裝證書以進行調(diào)試和分段環(huán)境,而不影響最終的生產(chǎn)發(fā)布版本:
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
注意android:exported
屬性:
無論是活動、廣播接收器、服務(wù)等組件,都可以由應(yīng)用程序的其他組件啟動。
如果為true,則任何應(yīng)用程序都可以訪問該活動并通過其完整類名啟動它。
如果為false,則只有相同應(yīng)用程序的組件、具有相同用戶ID的應(yīng)用程序或特權(quán)系統(tǒng)組件可以啟動該活動。
不明確設(shè)置此屬性會帶來在某些設(shè)備之間存在不同默認值的風險。
- 隱式意圖劫持
當開發(fā)者在調(diào)用意圖時錯誤地包含通配符條目而未指定完全限定的組件名稱或類名時,會發(fā)生隱式意圖劫持。這種疏忽可能使惡意應(yīng)用程序注冊一個意圖過濾器,攔截預(yù)期的操作。開發(fā)者的這種錯誤行為可能會泄漏敏感信息/數(shù)據(jù)或啟動受攻擊者控制的組件。
正確調(diào)用意圖的方式如下:
val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
addCategory("android.intent.category.OPENABLE")
setPackage("com.<YourOrganization>.<YourPakagename>")
setType("*/*")
putExtra("android.intent.extra.LOCAL_ONLY", true)
putExtra("android.intent.extra.TITLE", "<Your Any String>")
}
startActivity(intent)
- 防止點按劫持和數(shù)據(jù)混淆
點按劫持攻擊用于欺騙用戶執(zhí)行某些操作。
風險:完全遮擋
在完全遮擋中,攻擊者覆蓋了觸摸區(qū)域以劫持觸摸事件。通過在代碼中設(shè)置View.setFilterTouchesWhenObscured(true)
可以阻止完全遮擋。這將阻止由覆蓋層傳遞的觸摸。如果您更喜歡聲明性方法,還可以在要保護的View對象的布局文件中android:filterTouchesWhenObscured="true"
。
PC:Google Android Developers - Full-occlusion
風險:部分遮擋
PC:Google Android Developers - Partial-occlusion
最后,理解和減輕點按劫持似乎并不是什么難事。文章來源:http://www.zghlxwxcb.cn/news/detail-775114.html
結(jié)論
保護應(yīng)用免受任何安全漏洞的侵害需要始終如一的努力和奉獻。文章來源地址http://www.zghlxwxcb.cn/news/detail-775114.html
到了這里,關(guān)于保護您的Android應(yīng)用程序:Android應(yīng)用程序安全一覽的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!