欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter 移動(dòng)程序安全性提高的八個(gè)建議

 更新時(shí)間:2022年11月17日 11:06:15   作者:會(huì)煮咖啡的貓  
這篇文章主要為大家介紹了Flutter 移動(dòng)程序安全性提高建議詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

這里有一些步驟,我們可以采取以確保我們的 Flutter 應(yīng)用程序。

Google 在 2020 年透露,自 2018 年發(fā)布以來(lái),已經(jīng)有超過(guò) 200 萬(wàn)開(kāi)發(fā)者使用 flutter,使其成為當(dāng)今市場(chǎng)上最受歡迎的框架之一。最初,flutter 只能作為 Android 和 iOS 的移動(dòng)應(yīng)用開(kāi)發(fā)框架使用,但是現(xiàn)在我們已經(jīng)發(fā)布了 flutter 桌面和 flutter web,這個(gè)框架在 flutter 開(kāi)發(fā)者中變得更加流行。

我們主要關(guān)心的是編寫代碼和添加新特性,因此我們并不總是專注于確保應(yīng)用程序中的所有內(nèi)容都是安全和健壯的。這是因?yàn)槲覀儗W⒂诰帉懘a和創(chuàng)建新特性,而不是確保一切都是安全和健壯的。

現(xiàn)在,這可能會(huì)導(dǎo)致一個(gè)問(wèn)題,當(dāng)你把你的應(yīng)用程序部署后,一切都已經(jīng)完成和測(cè)試,你正在把它投入生產(chǎn),這可能使應(yīng)用程序易受攻擊,這可能導(dǎo)致用戶數(shù)據(jù)泄露,它可能導(dǎo)致你的應(yīng)用程序業(yè)務(wù)邏輯暴露,甚至可能導(dǎo)致你的數(shù)據(jù),或你的 API 鍵和你的資源被濫用,這反過(guò)來(lái)可能是非常昂貴的,特別是你正在接觸和使用類似 Firebase 或 AWS。

在本文中,我們可以采取一些步驟來(lái)保護(hù)我們的 Flutter 應(yīng)用程序,讓我們看看八個(gè)這樣的步驟,您可以采取這些步驟來(lái)確保您的下一個(gè) Flutter 應(yīng)用程序是完全安全和健壯的。

1. Obfuscate code 混淆代碼

docs.flutter.dev/deployment/…

因此,為了讓 Flutter 應(yīng)用程序更加安全,我們首先要考慮的是升級(jí)代碼。什么是代碼混淆?

模糊處理的基本定義就是讓代碼更難以被逆向工程閱讀所以你要做的就是你可以在 android 中找到任何 apk 文件你可以把它分解成文件這樣你就可以在你知道解壓文件之后再看代碼因?yàn)樗情_(kāi)源的 apk 文件可以是你知道的所有文件都被分解成你可以看到 java 文件代碼寫在里面所以模糊處理的方法就是不刪除代碼它不會(huì)對(duì)代碼做任何事情它只是改變變量的名字和類的名字以及地點(diǎn)之類的所以人類閱讀起來(lái)會(huì)更加困難。

這是軟件行業(yè)中的一個(gè)非常通用的術(shù)語(yǔ)。這樣做的目的是讓你的應(yīng)用程序的二進(jìn)制文件對(duì)人類來(lái)說(shuō)更難理解。

您可以對(duì) 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 后臺(tái)快照

為了繼續(xù)執(zhí)行第二步,操作系統(tǒng)會(huì)在應(yīng)用程序在后臺(tái)時(shí)獲取一個(gè)快照,因此在應(yīng)用程序在后臺(tái)時(shí)保存較大的狀態(tài)。

所以當(dāng)你的應(yīng)用程序被最小化時(shí)你知道滾動(dòng)進(jìn)入其他應(yīng)用程序你所站的最后一個(gè)屏幕的快照和最小化版本一起出現(xiàn)所以你可以看到如何保護(hù)它們像這樣你可以看到屏幕爆炸如何保護(hù)它們假設(shè)你有一些卡的細(xì)節(jié)在這里然后你最小化你的應(yīng)用程序然后有人在你最小化的應(yīng)用程序中滾動(dòng)然后你可以看到卡的細(xì)節(jié)和類似的東西所以你如何保護(hù)它所以有兩個(gè)簡(jiǎn)單的三行代碼你可以放入本地安卓和本地 iOS 來(lái)阻止這個(gè)。

例如,時(shí)鐘應(yīng)用程序和日歷應(yīng)用程序都有快照,因此相應(yīng)地,我們?yōu)樗鼈兌继峁┝丝煺?,所以這是一個(gè)很好的特性,但是如果您有任何私有信息,那么這就不是一個(gè)理想的特性。

最好的例子就是谷歌支付,所以如果你打開(kāi)這個(gè)應(yīng)用,開(kāi)始輸入你的銀行賬戶信息或者轉(zhuǎn)賬給某人,然后你在后臺(tái)打開(kāi)這個(gè)應(yīng)用,然后你看到屏幕變成了白色,這是隱藏這個(gè)應(yīng)用的標(biāo)簽的內(nèi)容。

通過(guò)這種方式,如果我們的應(yīng)用程序中有一些不想在后臺(tái)顯示的敏感信息,我們可以繼續(xù)并實(shí)現(xiàn)一個(gè)特定的插件。

3. Stay up-to-date 更新程序

因此,無(wú)論何時(shí)啟動(dòng)一個(gè)新的 Flutter 應(yīng)用程序,記住第三點(diǎn)非常重要。更新的版本應(yīng)該是您的起點(diǎn)。

讓你的 Flutter SDK、插件和軟件包保持最新是保護(hù)你的應(yīng)用程序最簡(jiǎn)單和最好的方法之一。當(dāng) Flutter 框架發(fā)現(xiàn)安全漏洞時(shí),Google 會(huì)發(fā)布補(bǔ)丁和安全修復(fù)程序。

找出任何尚未歸檔到 Google Flutter 存儲(chǔ)庫(kù)中的未解決問(wèn)題,并報(bào)告它們。

4. Flushing in-memory cache 刷新內(nèi)存緩存

如果您正在構(gòu)建一些非常關(guān)鍵和非常安全的應(yīng)用程序,比如銀行應(yīng)用程序,那么您應(yīng)該盡可能頻繁地刷新內(nèi)存緩存。在任何移動(dòng)開(kāi)發(fā)技術(shù)中,flutter 都是存儲(chǔ)來(lái)自后端或數(shù)據(jù)庫(kù)的內(nèi)容的最安全的方式,這就是為什么它在內(nèi)存中是最安全的方式。

這是因?yàn)樗窃谶\(yùn)行時(shí)生成的,并存儲(chǔ)在一個(gè)運(yùn)行時(shí)變量中,當(dāng)應(yīng)用程序被關(guān)閉時(shí)該變量將被清除,因此它不會(huì)存儲(chǔ)在任何地方。它被提取到一個(gè)運(yùn)行時(shí)并存儲(chǔ)在一個(gè)運(yùn)行時(shí)變量中。

數(shù)據(jù)或令牌或類似的東西應(yīng)該存儲(chǔ)在內(nèi)存中,在您的應(yīng)用程序中使用的變量。

或者,如果您想添加一個(gè)額外的安全層,您可以使用這個(gè)小代碼,您可以看到現(xiàn)在在這里刷新您的內(nèi)存后一段時(shí)間。例如,如果我正在使用一個(gè)銀行應(yīng)用程序,我的應(yīng)用程序到后臺(tái),我正在使用另一個(gè)應(yīng)用程序。

因?yàn)樵搼?yīng)用程序在后臺(tái)運(yùn)行了 15 分鐘或 20 分鐘,它可能會(huì)受到其他應(yīng)用程序或腳本讀取您的內(nèi)存變量。

靜止兩三分鐘后,你就可以清空內(nèi)存緩存了,這段代碼會(huì)告訴你應(yīng)用何時(shí)暫停,你只需要檢查 15 分鐘,然后清空它。

5. local authentication 本地認(rèn)證

與此相關(guān)的下一件事通常是本地身份驗(yàn)證。當(dāng)快照實(shí)現(xiàn)到位時(shí),通常希望在再次打開(kāi)快照時(shí)讓用戶再次進(jìn)行本地身份驗(yàn)證。

本地認(rèn)證,我指的是生物指標(biāo),面部識(shí)別,或類似的東西,所以如果你看看 what-app,你可以添加一個(gè)指紋鎖,這樣我們就可以為我們的應(yīng)用做類似的事情。

每當(dāng)應(yīng)用程序從后臺(tái)返回或第一次打開(kāi)時(shí),我們都會(huì)在本地對(duì)用戶進(jìn)行身份驗(yàn)證,以確保它們是有效的,因此對(duì)于擁有支付信息或知道敏感信息(如社交媒體信息)的用戶來(lái)說(shuō),這也非常有用。

您無(wú)法獲取那些受操作系統(tǒng)限制的簽名,因?yàn)檫@是身份盜竊,而且操作系統(tǒng)也不允許您這樣做。當(dāng)你檢查指紋時(shí),操作系統(tǒng)只告訴你指紋是真還是假。這是你唯一的收獲。

6. Secure Storage 安全儲(chǔ)存

pub.dev/packages/fl…

接下來(lái)是安全存儲(chǔ),因此如果您使用的是共享首選項(xiàng)或 sqlite 數(shù)據(jù)庫(kù),那么您需要的插件名為 sqflite。

因此,共享首選項(xiàng)成為應(yīng)用程序的一部分,即使在刪除數(shù)據(jù)之后,它也能保持?jǐn)?shù)據(jù)的持久性。你不應(yīng)該在你的共享首選項(xiàng)中存儲(chǔ)普通密碼或別針,因?yàn)樗鼈兛梢员黄渌麘?yīng)用程序通過(guò)代碼讀取,也可以被用戶自己清除,所以你不應(yīng)該在你的共享首選項(xiàng)中存儲(chǔ)直平面密碼或別針。

即使您希望存儲(chǔ)對(duì)您和您的共享首選項(xiàng)至關(guān)重要的內(nèi)容,也應(yīng)該在存儲(chǔ)它之前使用加密和加密。

即使你知道你被利用了,你的共享偏好也不會(huì)受到影響,所以你可以保留一些東西,比如主題數(shù)據(jù)或者從后端獲取用戶數(shù)據(jù)的令牌,或者告訴你應(yīng)用是否是第一次安裝的令牌,或者類似的東西。這是你想要保留的東西,以確保應(yīng)用程序的持久性。

我們需要確保我們的數(shù)據(jù)是安全和加密的,所以我們可以使用 flutter 安全存儲(chǔ),這是一個(gè)插件,使用安卓系統(tǒng)的密鑰鏈和 AES 加密。因此,我們要確保本地存儲(chǔ)的數(shù)據(jù)也是加密和安全的,這是增加 android 應(yīng)用程序安全性的另一種方法。 你可以選擇這個(gè)插件

7. Restrict network traffic 限制網(wǎng)絡(luò)流量

因此,第七點(diǎn)是限制網(wǎng)絡(luò)流量,網(wǎng)絡(luò)流量控制提供互聯(lián)網(wǎng)連接障礙,無(wú)論是自己的服務(wù)器或第三方供應(yīng)商。為了在移動(dòng)應(yīng)用程序和服務(wù)器之間提供安全連接,信息通常通過(guò)傳輸安全層(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ù)。為了定義“越獄”這個(gè)術(shù)語(yǔ),它實(shí)際上是一個(gè)與 iOS 系統(tǒng)相關(guān)的術(shù)語(yǔ)。在越獄過(guò)程中,你可以根植你的 iOS 設(shè)備,這樣你就可以實(shí)際訪問(wèn),你知道,撤銷,甚至篡改,任何蘋果強(qiáng)加的限制。

對(duì)于 Android 來(lái)說(shuō),當(dāng)你知道如何改變你的設(shè)備時(shí),你實(shí)際上進(jìn)入了開(kāi)發(fā)者模式,這樣你就可以安裝第三方應(yīng)用程序或者做各種各樣的改變。盡管有時(shí)候這種狀態(tài)是有用的,但它并不總是惡意的,因此無(wú)論何時(shí)使用設(shè)備,它都會(huì)處于這種狀態(tài)。

您的應(yīng)用程序或其數(shù)據(jù)可能會(huì)受到一些惡意軟件引入設(shè)備的影響。如果你想,你可以檢查這樣的惡意軟件。

在這種情況下,您可以檢測(cè)設(shè)備的狀態(tài)并采取適當(dāng)?shù)牟僮鳌@?,如果您的?yīng)用程序中有路由要限制破解監(jiān) 獄或根設(shè)備,則可以限制它們。

這個(gè)世界上沒(méi)有安全可言。如果我今天創(chuàng)建一個(gè)應(yīng)用程序,它可能是安全的今天,但在兩天,三天,或一年后,它可能不是安全的。

換句話說(shuō),我可以創(chuàng)建一個(gè)今天安全的應(yīng)用程序,但明天可能就不安全了,所以不存在 100% 安全的應(yīng)用程序。

因此,下面是使您的應(yīng)用程序更加安全和健壯的八個(gè)步驟。不可能保證您的應(yīng)用程序總是萬(wàn)無(wú)一失的,但是添加這八個(gè)步驟肯定會(huì)增加您的機(jī)會(huì),更多關(guān)于Flutter 移動(dòng)程序安全性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論