日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 安全与防护策略

發(fā)布時間:2023/12/20 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 安全与防护策略 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景:

隨著應用的發(fā)展,應用的安全也變的越來越重要,有些不法分子開始反編譯或者劫持一些app源碼。甚至有人通過截圖然后做識別,獲取別人內(nèi)容。我們在處理時應該如何去保護我們的應用呢?接下來我們可以分析一下,一些場景,的用途

1.防止截屏:

在系統(tǒng)中,已提供防止截屏的標識,我們只需要加進去即可

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

?這個只能防止一個頁面被截屏,如果需要所有頁面,可以放在基類(父類)中,子類可以通過參數(shù)來配置

通過IDE的截屏也會報錯。

錄屏也是黑屏。?

2.數(shù)據(jù)加密

2.1SharedPreferences

SharedPreferences這個類,在Android中用的比較多,是用來存儲臨時數(shù)據(jù)的,但是這個類存儲的數(shù)據(jù)以xml文件落在文件夾里。所有,只要root設備后,找到該文件夾下的文件,就可以以明文的方式展示。有些開發(fā)者也把登錄密碼或者token值直接存儲,這樣就會導致這些數(shù)據(jù)有可能會被盜取。

所以在SharedPreferences存儲一些重要數(shù)據(jù)可以進行加密。

2.2加密算法

加密分為對稱加密和非對稱加密。

對稱加密:所謂對稱,就是采用這種加密方法的雙方,使用方式用同樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。算法是一組規(guī)則,規(guī)定如何進行加密和解密。

非對稱加密:非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法

3.網(wǎng)絡請求的證書

在APP中,應用和服務器請求需要網(wǎng)絡,常見的是http或者https。裸奔的網(wǎng)絡一般會被抓包工具抓去,這樣,我們的數(shù)據(jù)就會被被人劫持或者修改。

證書的綁定可以很好的解決這個問題,通過證書驗證,來拒絕非法攔截等

在啟用https和證書時,我們可以通過https的證書來進行證書校驗,如果證書驗證不過,會直接拒絕,目前證書在app的網(wǎng)絡中被廣泛投入使用。關于證書的綁定可以參考不同的網(wǎng)絡框架。

4.簽名驗證

每個應用都有自己的獨立簽名,我們可以獲取app當前的簽名MD5或者SHA1值,和原簽名的進行校驗,如果對不上,基本判斷是非法簽名。原簽名信息如果泄露應及時更換簽名文件,否則可能導致簽名信息被惡意盜用。

public String getSingleAlgorithm(Context context) {try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuilder builder = new StringBuilder();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)builder.append("0");builder.append(appendString);builder.append(":");}return builder.toString();} catch (Exception e) {e.printStackTrace();}return null; }

5.代碼的混淆

代碼混淆,是一種安全措施。在應用中被廣泛使用。將代碼混淆后,提高了代碼的閱讀難度,即使apk被破解,混淆后的代碼閱讀難度更大。

如何混淆代碼?請看混淆詳解

混淆目前來說,對應用算是比較小的投入。在混淆開啟,需要注意的是會產(chǎn)生一個mapping.txt文件,這個文件對應的包,且該文件最好保存起來,如果在后期出現(xiàn)崩潰或者異常,可以通過trace追蹤還原源代碼所在行。有助于bug修復和定位

6.加固

加固已成為防脫殼的一種常見的手段,目前市場上有好多種加固方案,我們自己可以選擇一種,但是在進入應用市場,第三方也會對我們的應用進行加固。加固的目的就是提高apk的安全性,提高被破解的難度

7.dex加密

可以參考三方

8.android:exported="" 開閉

如果封閉起來,對應的組件只在內(nèi)部使用,無法和外部通訊,外部也無法去獲取你應用的通信。

9.其他會不定期補充進來

總結

以上是生活随笔為你收集整理的Android 安全与防护策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。