8 个关于进步你 Flutter 移动程序安全性的建议
原文 shirsh94.medium.com/8-tips-to-s…
前语
这里有一些过程,咱们能够采纳以保证咱们的 Flutter 运用程序。
Google 在 2020 年透露,自 2018 年发布以来,现已有超越 200 万开发者运用 flutter,使其成为当今市场上最受欢迎的框架之一。最初,flutter 只能作为 Android 和 iOS 的移动运用开发框架运用,可是现在咱们现已发布了 flutter 桌面和 flutter web,这个框架在 flutter 开发者中变得愈加盛行。
咱们首要关心的是编写代码和添加新特性,因而咱们并不总是专心于保证运用程序中的所有内容都是安全和强健的。这是由于咱们专心于编写代码和创立新特性,而不是保证一切都是安全和强健的。
现在,这或许会导致一个问题,当你把你的运用程序部署后,一切都现已完结和测试,你正在把它投入生产,这或许使运用程序易受攻击,这或许导致用户数据泄露,它或许导致你的运用程序业务逻辑暴露,甚至或许导致你的数据,或你的 API 键和你的资源被滥用,这反过来或许是十分贵重的,特别是你正在触摸和运用相似 Firebase 或 AWS。
正文
在本文中,咱们能够采纳一些过程来维护咱们的 Flutter 运用程序,让咱们看看八个这样的过程,您能够采纳这些过程来保证您的下一个 Flutter 运用程序是完全安全和强健的。
1. Obfuscate code 混淆代码
docs.flutter.dev/deployment/…
因而,为了让 Flutter 运用程序愈加安全,咱们首先要考虑的是晋级代码。什么是代码混淆?
含糊处理的根本界说便是让代码更难以被逆向工程阅览所以你要做的便是你能够在 android 中找到任何 apk 文件你能够把它分解成文件这样你就能够在你知道解压文件之后再看代码由于它是开源的 apk 文件能够是你知道的所有文件都被分解成你能够看到 java 文件代码写在里边所以含糊处理的办法便是不删去代码它不会对代码做任何工作它只是改动变量的姓名和类的姓名以及地址之类的所以人类阅览起来会愈加困难。
这是软件职业中的一个十分通用的术语。这样做的目的是让你的运用程序的二进制文件对人类来说更难了解。
您能够对 Flutter 运用程序或 Android 运用程序进行反向工程,以便它在运用程序中生成并供给函数名、类名和字符串等信息。由于它暴露了许多不同的细节,所以也暴露了您的 API 键。
假如逆向工程办理不妥,或许类和函数名暴露了业务逻辑,那么它就供给了一种防范措施。
2. background snapshots 后台快照
为了继续执行第二步,操作体系会在运用程序在后台时获取一个快照,因而在运用程序在后台时保存较大的状况。
所以当你的运用程序被最小化时你知道翻滚进入其他运用程序你所站的最后一个屏幕的快照和最小化版别一起出现所以你能够看到怎么维护它们像这样你能够看到屏幕爆破怎么维护它们假设你有一些卡的细节在这里然后你最小化你的运用程序然后有人在你最小化的运用程序中翻滚然后你能够看到卡的细节和相似的东西所以你怎么维护它所以有两个简单的三行代码你能够放入本地安卓和本地 iOS 来阻止这个。
例如,时钟运用程序和日历运用程序都有快照,因而相应地,咱们为它们都供给了快照,所以这是一个很好的特性,可是假如您有任何私有信息,那么这就不是一个理想的特性。
最好的例子便是谷歌付出,所以假如你翻开这个运用,开始输入你的银行账户信息或许转账给或人,然后你在后台翻开这个运用,然后你看到屏幕变成了白色,这是隐藏这个运用的标签的内容。
通过这种办法,假如咱们的运用程序中有一些不想在后台显现的灵敏信息,咱们能够继续并完成一个特定的插件。
3. Stay up-to-date 更新程序
因而,无论何时启动一个新的 Flutter 运用程序,记住第三点十分重要。更新的版别应该是您的起点。
让你的 Flutter SDK、插件和软件包保持最新是维护你的运用程序最简单和最好的办法之一。当 Flutter 框架发现安全漏洞时,Google 会发布补丁和安全修复程序。
找出任何尚未归档到 Google Flutter 存储库中的未解决问题,并陈述它们。
4. Flushing in-memory cache 改写内存缓存
假如您正在构建一些十分要害和十分安全的运用程序,比方银行运用程序,那么您应该尽或许频频地改写内存缓存。在任何移动开发技能中,flutter 都是存储来自后端或数据库的内容的最安全的办法,这便是为什么它在内存中是最安全的办法。
这是由于它是在运行时生成的,并存储在一个运行时变量中,当运用程序被封闭时该变量将被铲除,因而它不会存储在任何地方。它被提取到一个运行时并存储在一个运行时变量中。
数据或令牌或相似的东西应该存储在内存中,在您的运用程序中运用的变量。
或许,假如您想添加一个额外的安全层,您能够运用这个小代码,您能够看到现在在这里改写您的内存后一段时间。例如,假如我正在运用一个银行运用程序,我的运用程序到后台,我正在运用另一个运用程序。
由于该运用程序在后台运行了 15 分钟或 20 分钟,它或许会受到其他运用程序或脚本读取您的内存变量。
停止两三分钟后,你就能够清空内存缓存了,这段代码会告知你运用何时暂停,你只需要查看 15 分钟,然后清空它。
5. local authentication 本地认证
与此相关的下一件事一般是本地身份验证。当快照完成到位时,一般期望在再次翻开快照时让用户再次进行本地身份验证。
本地认证,我指的是生物指标,面部辨认,或相似的东西,所以假如你看看 what-app,你能够添加一个指纹锁,这样咱们就能够为咱们的运用做相似的工作。
每当运用程序从后台返回或第一次翻开时,咱们都会在本地对用户进行身份验证,以保证它们是有效的,因而关于拥有付出信息或知道灵敏信息(如交际媒体信息)的用户来说,这也十分有用。
您无法获取那些受操作体系约束的签名,由于这是身份偷盗,而且操作体系也不允许您这样做。当你查看指纹时,操作体系只告知你指纹是真仍是假。这是你仅有的收获。
6. Secure Storage 安全储存
pub.dev/packages/fl…
接下来是安全存储,因而假如您运用的是同享首选项或 sqlite 数据库,那么您需要的插件名为 sqflite。
因而,同享首选项成为运用程序的一部分,即便在删去数据之后,它也能保持数据的持久性。你不应该在你的同享首选项中存储一般暗码或别针,由于它们能够被其他运用程序通过代码读取,也能够被用户自己铲除,所以你不应该在你的同享首选项中存储直平面暗码或别针。
即便您期望存储对您和您的同享首选项至关重要的内容,也应该在存储它之前运用加密和加密。
即便你知道你被利用了,你的同享偏好也不会受到影响,所以你能够保存一些东西,比方主题数据或许从后端获取用户数据的令牌,或许告知你运用是否是第一次装置的令牌,或许相似的东西。这是你想要保存的东西,以保证运用程序的持久性。
咱们需要保证咱们的数据是安全和加密的,所以咱们能够运用 flutter 安全存储,这是一个插件,运用安卓体系的密钥链和 AES 加密。因而,咱们要保证本地存储的数据也是加密和安全的,这是添加 android 运用程序安全性的另一种办法。 你能够挑选这个插件
7. Restrict network traffic 约束网络流量
因而,第七点是约束网络流量,网络流量操控供给互联网连接障碍,无论是自己的服务器或第三方供货商。为了在移动运用程序和服务器之间供给安全连接,信息一般通过传输安全层(T.L.S)交换。
最受信赖的网络
为了将网络流量或连接约束到不安全的端点,能够显式地将域列入白名单。
- 安卓体系:
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 越狱维护
最后但同样重要的是,咱们有越狱维护。为了界说“越狱”这个术语,它实践上是一个与 iOS 体系相关的术语。在越狱过程中,你能够根植你的 iOS 设备,这样你就能够实践访问,你知道,撤销,甚至篡改,任何苹果强加的约束。
关于 Android 来说,当你知道怎么改动你的设备时,你实践上进入了开发者形式,这样你就能够装置第三方运用程序或许做各种各样的改动。虽然有时候这种状况是有用的,但它并不总是歹意的,因而无论何时运用设备,它都会处于这种状况。
您的运用程序或其数据或许会受到一些歹意软件引入设备的影响。假如你想,你能够查看这样的歹意软件。
在这种情况下,您能够检测设备的状况并采纳恰当的操作。例如,假如您的运用程序中有路由要约束破解监狱或根设备,则能够约束它们。
这个世界上没有安全可言。假如我今日创立一个运用程序,它或许是安全的今日,但在两天,三天,或一年后,它或许不是安全的。
换句话说,我能够创立一个今日安全的运用程序,但明天或许就不安全了,所以不存在 100% 安全的运用程序。
因而,下面是使您的运用程序愈加安全和强健的八个过程。不或许保证您的运用程序总是万无一失的,可是添加这八个过程肯定会添加您的时机。
结束语
假如本文对你有帮助,请转发让更多的朋友阅览。
或许这个操作只要你 3 秒钟,对我来说是一个鼓励,感谢。
祝你有一个美好的一天~
猫哥
-
微信 ducafecat
-
wiki.ducafecat.tech
-
video.ducafecat.tech