成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Android項目安全注意事項和解決方案

WalkerXu / 2037人閱讀

摘要:還有就是項目發(fā)布后項目中一些數(shù)據(jù)安全,等方面,都值得我們考慮,思索。官方文檔安全說明及其以上系統(tǒng)提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能,此功能的開關(guān)決定于該應(yīng)用程序中文件中的屬性值,其屬性值默認(rèn)是。解決方案自己進(jìn)行數(shù)據(jù)加密。

在個人和公司開發(fā)的項目發(fā)布后,作為軟件工程師最擔(dān)心的就是代碼安全(雖說現(xiàn)今而言,技術(shù)已沒有什么秘密,聰明人很多,你的功能可能別人稍加研究就能不看代碼也能實現(xiàn)(黑科技除外),但實現(xiàn)歸實現(xiàn),實現(xiàn)的方案,思路,性能這些是別人無法復(fù)制的)。
還有就是項目發(fā)布后項目中一些數(shù)據(jù)安全,等方面,都值得我們考慮,思索。

1. AndroidManifest

AndroidManifest中的android:allowBackup屬性,默認(rèn)為true,如無特殊情況,可以改為false,防止數(shù)據(jù)被備份。

官方文檔 安全說明

Android API Level
8及其以上Android系統(tǒng)提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能,此功能的開關(guān)決定于該應(yīng)用程序中AndroidManifest.xml文件中的allowBackup屬性值[1]
,其屬性值默認(rèn)是True。當(dāng)allowBackup標(biāo)志為true時,用戶即可通過adb backup和adb
restore來進(jìn)行對應(yīng)用數(shù)據(jù)的備份和恢復(fù),這可能會帶來一定的安全風(fēng)險。

Android屬性allowBackup安全風(fēng)險源于adb backup容許任何一個能夠打開USB
調(diào)試開關(guān)的人從Android手機(jī)中復(fù)制應(yīng)用數(shù)據(jù)到外設(shè),一旦應(yīng)用數(shù)據(jù)被備份之后,所有應(yīng)用數(shù)據(jù)都可被用戶讀??;adb
restore容許用戶指定一個恢復(fù)的數(shù)據(jù)來源(即備份的應(yīng)用數(shù)據(jù))來恢復(fù)應(yīng)用程序數(shù)據(jù)的創(chuàng)建。因此,當(dāng)一個應(yīng)用數(shù)據(jù)被備份之后,用戶即可在其他Android手機(jī)或模擬器上安裝同一個應(yīng)用,以及通過恢復(fù)該備份的應(yīng)用數(shù)據(jù)到該設(shè)備上,在該設(shè)備上打開該應(yīng)用即可恢復(fù)到被備份的應(yīng)用程序的狀態(tài)。

尤其是通訊錄應(yīng)用,一旦應(yīng)用程序支持備份和恢復(fù)功能,攻擊者即可通過adb backup和adb
restore進(jìn)行恢復(fù)新安裝的同一個應(yīng)用來查看聊天記錄等信息;對于支付金融類應(yīng)用,攻擊者可通過此來進(jìn)行惡意支付、盜取存款等;因此為了安全起見,開發(fā)者務(wù)必將allowBackup標(biāo)志值設(shè)置為false來關(guān)閉應(yīng)用程序的備份和恢復(fù)功能,以免造成信息泄露和財產(chǎn)損失。

2. 防截屏

在登錄和注冊,或修改密碼等敏感數(shù)據(jù)操作時,如果手機(jī)中有后臺默認(rèn)隱藏截屏的應(yīng)用,在輸入是一直截屏,就有可能盜取敏感數(shù)據(jù)信息。

解決方案:

在Activity onCreate 中加入:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
3. 本地數(shù)據(jù)加密

開發(fā)過程中少不了通過 android.content.SharedPreferences 進(jìn)行一些數(shù)據(jù)和變量存儲,但是這些數(shù)據(jù)很容易被讀取到,所以需要應(yīng)對數(shù)據(jù)進(jìn)行加密處理。

解決方案:

自己進(jìn)行數(shù)據(jù)加密。

通過第三方進(jìn)行加密,在此推薦:Hawk

4. 隱藏日志

如果開發(fā)項目搭建之初就對項目整體考慮周到了,我覺得這點(diǎn)應(yīng)該不用,但是如果項目框架搭建之初沒進(jìn)行此方面的考慮,就得自行處理了,具體方案如下:

先在當(dāng)前Module下的build.gradle中的buildTypes方法中代碼至如下(之前自己的配置代碼不變):

buildTypes {
    release {
        buildConfigField "boolean", "LOG_DEBUG", "false"
        
        proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
    }
}

然后在proguard-rules.pro文件中加入:

-assumenosideeffects class android.util.Log{
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

至此,可以完全隱藏android.util.Log的所有日志。

5. 混淆

先在當(dāng)前Module下的build.gradle中的buildTypes方法中修改代碼至如下(之前自己的配置代碼不變):

buildTypes {
    release {
        minifyEnabled true
    }
}

然后再在proguard-rules.pro文件中加入引用的jar、library等進(jìn)行排除操作。

在此推薦一個Android Studio插件,免去自己一個一個添加的麻煩:AndroidProguardPlugin 一鍵生成項目混淆代碼插件(此插件還在繼續(xù)完善中,如有沒有添加的庫,可以直接聯(lián)系插件開發(fā)者進(jìn)行添加)

以上是總結(jié)的一些安全方面的方案,希望有用,當(dāng)然,代碼方面還可以進(jìn)行項目加殼處理,進(jìn)一步進(jìn)行安全保護(hù),具體加殼可以利用一些第三方平臺等,這里不一一列舉,自行Baidu,Google。

by anonymous (感謝趙同學(xué)整理)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/11201.html

相關(guān)文章

  • 金三銀四,2019大廠Android高級工程師面試題整理

    摘要:原文地址游客前言金三銀四,很多同學(xué)心里大概都準(zhǔn)備著年后找工作或者跳槽。最近有很多同學(xué)都在交流群里求大廠面試題。 最近整理了一波面試題,包括安卓JAVA方面的,目前大廠還是以安卓源碼,算法,以及數(shù)據(jù)結(jié)構(gòu)為主,有一些中小型公司也會問到混合開發(fā)的知識,至于我為什么傾向于混合開發(fā),我的一句話就是走上編程之路,將來你要學(xué)不僅僅是這些,豐富自己方能與世接軌,做好全棧的裝備。 原文地址:游客kutd...

    tracymac7 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<