Flutter 移動程序安全性提高的八個建議
正文
這里有一些步驟,我們可以采取以確保我們的 Flutter 應(yīng)用程序。
Google 在 2020 年透露,自 2018 年發(fā)布以來,已經(jīng)有超過 200 萬開發(fā)者使用 flutter,使其成為當(dāng)今市場上最受歡迎的框架之一。最初,flutter 只能作為 Android 和 iOS 的移動應(yīng)用開發(fā)框架使用,但是現(xiàn)在我們已經(jīng)發(fā)布了 flutter 桌面和 flutter web,這個框架在 flutter 開發(fā)者中變得更加流行。
我們主要關(guān)心的是編寫代碼和添加新特性,因此我們并不總是專注于確保應(yīng)用程序中的所有內(nèi)容都是安全和健壯的。這是因?yàn)槲覀儗W⒂诰帉懘a和創(chuàng)建新特性,而不是確保一切都是安全和健壯的。
現(xiàn)在,這可能會導(dǎo)致一個問題,當(dāng)你把你的應(yīng)用程序部署后,一切都已經(jīng)完成和測試,你正在把它投入生產(chǎn),這可能使應(yīng)用程序易受攻擊,這可能導(dǎo)致用戶數(shù)據(jù)泄露,它可能導(dǎo)致你的應(yīng)用程序業(yè)務(wù)邏輯暴露,甚至可能導(dǎo)致你的數(shù)據(jù),或你的 API 鍵和你的資源被濫用,這反過來可能是非常昂貴的,特別是你正在接觸和使用類似 Firebase 或 AWS。
在本文中,我們可以采取一些步驟來保護(hù)我們的 Flutter 應(yīng)用程序,讓我們看看八個這樣的步驟,您可以采取這些步驟來確保您的下一個 Flutter 應(yīng)用程序是完全安全和健壯的。
1. Obfuscate code 混淆代碼
因此,為了讓 Flutter 應(yīng)用程序更加安全,我們首先要考慮的是升級代碼。什么是代碼混淆?
模糊處理的基本定義就是讓代碼更難以被逆向工程閱讀所以你要做的就是你可以在 android 中找到任何 apk 文件你可以把它分解成文件這樣你就可以在你知道解壓文件之后再看代碼因?yàn)樗情_源的 apk 文件可以是你知道的所有文件都被分解成你可以看到 java 文件代碼寫在里面所以模糊處理的方法就是不刪除代碼它不會對代碼做任何事情它只是改變變量的名字和類的名字以及地點(diǎn)之類的所以人類閱讀起來會更加困難。
這是軟件行業(yè)中的一個非常通用的術(shù)語。這樣做的目的是讓你的應(yīng)用程序的二進(jìn)制文件對人類來說更難理解。
您可以對 Flutter 應(yīng)用程序或 Android 應(yīng)用程序進(jìn)行反向工程,以便它在應(yīng)用程序中生成并提供函數(shù)名、類名和字符串等信息。因?yàn)樗┞读嗽S多不同的細(xì)節(jié),所以也暴露了您的 API 鍵。
如果逆向工程管理不當(dāng),或者類和函數(shù)名暴露了業(yè)務(wù)邏輯,那么它就提供了一種防范措施。
2. background snapshots 后臺快照
為了繼續(xù)執(zhí)行第二步,操作系統(tǒng)會在應(yīng)用程序在后臺時獲取一個快照,因此在應(yīng)用程序在后臺時保存較大的狀態(tài)。
所以當(dāng)你的應(yīng)用程序被最小化時你知道滾動進(jìn)入其他應(yīng)用程序你所站的最后一個屏幕的快照和最小化版本一起出現(xiàn)所以你可以看到如何保護(hù)它們像這樣你可以看到屏幕爆炸如何保護(hù)它們假設(shè)你有一些卡的細(xì)節(jié)在這里然后你最小化你的應(yīng)用程序然后有人在你最小化的應(yīng)用程序中滾動然后你可以看到卡的細(xì)節(jié)和類似的東西所以你如何保護(hù)它所以有兩個簡單的三行代碼你可以放入本地安卓和本地 iOS 來阻止這個。
例如,時鐘應(yīng)用程序和日歷應(yīng)用程序都有快照,因此相應(yīng)地,我們?yōu)樗鼈兌继峁┝丝煺?,所以這是一個很好的特性,但是如果您有任何私有信息,那么這就不是一個理想的特性。
最好的例子就是谷歌支付,所以如果你打開這個應(yīng)用,開始輸入你的銀行賬戶信息或者轉(zhuǎn)賬給某人,然后你在后臺打開這個應(yīng)用,然后你看到屏幕變成了白色,這是隱藏這個應(yīng)用的標(biāo)簽的內(nèi)容。
通過這種方式,如果我們的應(yīng)用程序中有一些不想在后臺顯示的敏感信息,我們可以繼續(xù)并實(shí)現(xiàn)一個特定的插件。
3. Stay up-to-date 更新程序
因此,無論何時啟動一個新的 Flutter 應(yīng)用程序,記住第三點(diǎn)非常重要。更新的版本應(yīng)該是您的起點(diǎn)。
讓你的 Flutter SDK、插件和軟件包保持最新是保護(hù)你的應(yīng)用程序最簡單和最好的方法之一。當(dāng) Flutter 框架發(fā)現(xiàn)安全漏洞時,Google 會發(fā)布補(bǔ)丁和安全修復(fù)程序。
找出任何尚未歸檔到 Google Flutter 存儲庫中的未解決問題,并報告它們。
4. Flushing in-memory cache 刷新內(nèi)存緩存
如果您正在構(gòu)建一些非常關(guān)鍵和非常安全的應(yīng)用程序,比如銀行應(yīng)用程序,那么您應(yīng)該盡可能頻繁地刷新內(nèi)存緩存。在任何移動開發(fā)技術(shù)中,flutter 都是存儲來自后端或數(shù)據(jù)庫的內(nèi)容的最安全的方式,這就是為什么它在內(nèi)存中是最安全的方式。
這是因?yàn)樗窃谶\(yùn)行時生成的,并存儲在一個運(yùn)行時變量中,當(dāng)應(yīng)用程序被關(guān)閉時該變量將被清除,因此它不會存儲在任何地方。它被提取到一個運(yùn)行時并存儲在一個運(yùn)行時變量中。
數(shù)據(jù)或令牌或類似的東西應(yīng)該存儲在內(nèi)存中,在您的應(yīng)用程序中使用的變量。
或者,如果您想添加一個額外的安全層,您可以使用這個小代碼,您可以看到現(xiàn)在在這里刷新您的內(nèi)存后一段時間。例如,如果我正在使用一個銀行應(yīng)用程序,我的應(yīng)用程序到后臺,我正在使用另一個應(yīng)用程序。
因?yàn)樵搼?yīng)用程序在后臺運(yùn)行了 15 分鐘或 20 分鐘,它可能會受到其他應(yīng)用程序或腳本讀取您的內(nèi)存變量。
靜止兩三分鐘后,你就可以清空內(nèi)存緩存了,這段代碼會告訴你應(yīng)用何時暫停,你只需要檢查 15 分鐘,然后清空它。
5. local authentication 本地認(rèn)證
與此相關(guān)的下一件事通常是本地身份驗(yàn)證。當(dāng)快照實(shí)現(xiàn)到位時,通常希望在再次打開快照時讓用戶再次進(jìn)行本地身份驗(yàn)證。
本地認(rèn)證,我指的是生物指標(biāo),面部識別,或類似的東西,所以如果你看看 what-app,你可以添加一個指紋鎖,這樣我們就可以為我們的應(yīng)用做類似的事情。
每當(dāng)應(yīng)用程序從后臺返回或第一次打開時,我們都會在本地對用戶進(jìn)行身份驗(yàn)證,以確保它們是有效的,因此對于擁有支付信息或知道敏感信息(如社交媒體信息)的用戶來說,這也非常有用。
您無法獲取那些受操作系統(tǒng)限制的簽名,因?yàn)檫@是身份盜竊,而且操作系統(tǒng)也不允許您這樣做。當(dāng)你檢查指紋時,操作系統(tǒng)只告訴你指紋是真還是假。這是你唯一的收獲。
6. Secure Storage 安全儲存
接下來是安全存儲,因此如果您使用的是共享首選項(xiàng)或 sqlite 數(shù)據(jù)庫,那么您需要的插件名為 sqflite。
因此,共享首選項(xiàng)成為應(yīng)用程序的一部分,即使在刪除數(shù)據(jù)之后,它也能保持?jǐn)?shù)據(jù)的持久性。你不應(yīng)該在你的共享首選項(xiàng)中存儲普通密碼或別針,因?yàn)樗鼈兛梢员黄渌麘?yīng)用程序通過代碼讀取,也可以被用戶自己清除,所以你不應(yīng)該在你的共享首選項(xiàng)中存儲直平面密碼或別針。
即使您希望存儲對您和您的共享首選項(xiàng)至關(guān)重要的內(nèi)容,也應(yīng)該在存儲它之前使用加密和加密。
即使你知道你被利用了,你的共享偏好也不會受到影響,所以你可以保留一些東西,比如主題數(shù)據(jù)或者從后端獲取用戶數(shù)據(jù)的令牌,或者告訴你應(yīng)用是否是第一次安裝的令牌,或者類似的東西。這是你想要保留的東西,以確保應(yīng)用程序的持久性。
我們需要確保我們的數(shù)據(jù)是安全和加密的,所以我們可以使用 flutter 安全存儲,這是一個插件,使用安卓系統(tǒng)的密鑰鏈和 AES 加密。因此,我們要確保本地存儲的數(shù)據(jù)也是加密和安全的,這是增加 android 應(yīng)用程序安全性的另一種方法。 你可以選擇這個插件
7. Restrict network traffic 限制網(wǎng)絡(luò)流量
因此,第七點(diǎn)是限制網(wǎng)絡(luò)流量,網(wǎng)絡(luò)流量控制提供互聯(lián)網(wǎng)連接障礙,無論是自己的服務(wù)器或第三方供應(yīng)商。為了在移動應(yīng)用程序和服務(wù)器之間提供安全連接,信息通常通過傳輸安全層(T.L.S)交換。
最受信任的網(wǎng)絡(luò)
為了將網(wǎng)絡(luò)流量或連接限制到不安全的端點(diǎn),可以顯式地將域列入白名單。
- 安卓系統(tǒng):
res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config> <domain includeSubdomains="true">yourDomain.com</domain> <trust-anchors> <certificates src="@raw/my_ca"/> </trust-anchors> </domain-config> </network-security-config>
- IOS:
ios/Info.plist
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSExceptionDomains</key> <dict> <key>cocoacasts.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
8. jail-breaking protection 越獄保護(hù)
最后但同樣重要的是,我們有越獄保護(hù)。為了定義“越獄”這個術(shù)語,它實(shí)際上是一個與 iOS 系統(tǒng)相關(guān)的術(shù)語。在越獄過程中,你可以根植你的 iOS 設(shè)備,這樣你就可以實(shí)際訪問,你知道,撤銷,甚至篡改,任何蘋果強(qiáng)加的限制。
對于 Android 來說,當(dāng)你知道如何改變你的設(shè)備時,你實(shí)際上進(jìn)入了開發(fā)者模式,這樣你就可以安裝第三方應(yīng)用程序或者做各種各樣的改變。盡管有時候這種狀態(tài)是有用的,但它并不總是惡意的,因此無論何時使用設(shè)備,它都會處于這種狀態(tài)。
您的應(yīng)用程序或其數(shù)據(jù)可能會受到一些惡意軟件引入設(shè)備的影響。如果你想,你可以檢查這樣的惡意軟件。
在這種情況下,您可以檢測設(shè)備的狀態(tài)并采取適當(dāng)?shù)牟僮鳌@纾绻膽?yīng)用程序中有路由要限制破解監(jiān) 獄或根設(shè)備,則可以限制它們。
這個世界上沒有安全可言。如果我今天創(chuàng)建一個應(yīng)用程序,它可能是安全的今天,但在兩天,三天,或一年后,它可能不是安全的。
換句話說,我可以創(chuàng)建一個今天安全的應(yīng)用程序,但明天可能就不安全了,所以不存在 100% 安全的應(yīng)用程序。
因此,下面是使您的應(yīng)用程序更加安全和健壯的八個步驟。不可能保證您的應(yīng)用程序總是萬無一失的,但是添加這八個步驟肯定會增加您的機(jī)會,更多關(guān)于Flutter 移動程序安全性的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Android studio3.6的java api方式調(diào)用opencv
這篇文章主要介紹了Android studio3.6的java api方式調(diào)用opencv的代碼詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03Android 判斷程序在前臺運(yùn)行還是后臺運(yùn)行
本文主要介紹了Android 判斷程序在前臺運(yùn)行還是后臺運(yùn)行的方法。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04Android進(jìn)階篇-自定義圖片伸縮控件具體實(shí)例
這篇文章介紹了Android自定義圖片伸縮控件具體實(shí)例,有需要的朋友可以參考一下2013-11-11Android仿微信圖片選擇器ImageSelector使用詳解
這篇文章主要為大家詳細(xì)介紹了Android仿微信圖片選擇器ImageSelector的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12Android中RecyclerView實(shí)現(xiàn)多級折疊列表效果(TreeRecyclerView)
RecyclerView出現(xiàn)已經(jīng)有一段時間了,相信大家肯定不陌生了,下面這篇文章主要給大家介紹了Android中RecyclerView實(shí)現(xiàn)多級折疊列表效果(TreeRecyclerView)的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下。2017-05-05Flutter中跨組件數(shù)據(jù)傳遞的方法總結(jié)
Flutter中的數(shù)據(jù)傳遞一般包括:父->子,子->父,父->父,也就是說嵌套時的傳遞以及跨頁面的傳遞,本文整理了三種我們通常使用的方法,需要的可以參考一下2023-06-06android camera yuv幀水平翻轉(zhuǎn)實(shí)例
今天小編就為大家分享一篇android camera yuv幀水平翻轉(zhuǎn)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08