Security 如何保护我的Flatter移动应用程序?(颤振App穿透测试结果)
从哪里可以获得颤振应用程序安全文档或最佳实践?我几乎准备好发布我的应用程序了。 我使用在线(免费版)并检查我的应用程序的安全性 我上面有一个主要问题,下面还有一些问题Security 如何保护我的Flatter移动应用程序?(颤振App穿透测试结果),security,flutter,penetration-testing,Security,Flutter,Penetration Testing,从哪里可以获得颤振应用程序安全文档或最佳实践?我几乎准备好发布我的应用程序了。 我使用在线(免费版)并检查我的应用程序的安全性 我上面有一个主要问题,下面还有一些问题 如何禁用调试模式 如何禁用备份模式 如何在AndroidManifest或类似文件中阻止我的google map api密钥 这些是我面临的安全问题。 --------------------------------- 已启用高调试模式 说明 应用程序以调试模式编译,允许攻击者附加调试器以访问敏感数据或执行恶意操作。攻击者可以
- 如何禁用调试模式李>
- 如何禁用备份模式李>
- 如何在AndroidManifest或类似文件中阻止我的google map api密钥
<activity android:name="com.apptreesoftware.mapview.MapActivity" android:theme="@7F0C0102"> </activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value=“****************************”></meta-data>
<meta-data android:name="com.google.android.gms.version" android:value="@7F080004"></meta-data>
----------------------------
可能启用备份模式
说明
Android默认执行应用程序的完整备份,包括存储在/data分区上的私有文件。Backup Manager服务将这些数据上传到用户的Google Drive帐户
建议
如果应用程序包含不希望还原的敏感数据,可以通过在应用程序标记中将属性android:allowBackup设置为false来禁用备份模式
参考资料
•M开发者预览版上的随机思考:丑陋(第二部分)
•DRD22。不要缓存敏感信息
----------------------------
可能在没有权限的情况下声明服务
说明
服务是一个应用程序组件,可以在后台执行操作,而无需用户交互。服务还可用于向其他应用程序公开功能。这对应于对Context.bindService()的调用,以建立到服务的连接并与之交互。
其他应用程序可以调用未受保护的服务,并可能访问敏感信息或执行特权操作
建议
服务可以向外部组件公开多个方法。可以使用方法checkPermission为每个方法定义任意权限。
还可以通过在清单的标记中强制使用权限来分离服务和限制访问
<permission android:name="co.ostorlab.custom_permission" android:label="custom_permission" android:protectionLevel="dangerous"></permission>
<service android:name="co.ostorlab.custom_service" android:permission="co.ostorlab.custom_permission">
<intent-filter>
<action android:name="co.ostorlab.ACTION" />
</intent-filter>
</service>
该服务可以通过在执行单个IPC调用的实现之前调用checkCallingPermissions方法来强制执行该调用的权限
参考资料
•CWE-280:不当处理权限或特权不足
•通过不受信任的输入做出安全决策(OWASP Mobile Top 10)
•服务(Android开发者文档)
技术细节
假阳性
AndroidManifest.xml中的服务定义:
<service android:name="com.mobile.niyazibank.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT">
</action>
</intent-filter>
</service>
<service android:name="com.mobile.niyazibank.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT">
</action>
</intent-filter>
</service>
<service android:name="io.flutter.plugins.firebasemessaging.FlutterFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT">
</action>
</intent-filter>
</service>
<service android:name="io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT">
</action>
</intent-filter>
</service>
<service android:exported="true" android:name="com.google.firebase.messaging.FirebaseMessagingService">
<intent-filter android:priority="-500">
<action android:name="com.google.firebase.MESSAGING_EVENT">
</action>
</intent-filter>
</service>
<service android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdService">
<intent-filter android:priority="-500">
<action android:name="com.google.firebase.INSTANCE_ID_EVENT">
</action>
</intent-filter>
</service>
--------------------
重要导出活动、服务和广播接收器列表
说明
应用程序中所有导出组件的列表。导出的组件可供外部应用程序访问,并为应用程序提供入口点
建议
本条目仅供参考,不适用任何建议
参考资料
•内容提供商(Android开发者文档)
•活动(Android开发者文档)
•广播接收器(Android开发者文档)
•服务(Android Developer文档)您是否上传了
版本或apk
的调试版本以检查安全性
flatterbuild--release
将生成发布版本apk
另外,请在此处阅读更多信息:您确定flatter build--release命令将为您的应用程序生成一个发布版本,如果您只想在测试时从应用程序中删除调试横幅,则
在MaterialApp上,将debugShowCheckedModeBanner设置为false
材料聚丙烯(
debugShowCheckedModeBanner:false
)
调试横幅也将在发布版本时自动删除