Engincode/flutter_secure_app

GitHub: Engincode/flutter_secure_app

一个 Flutter 插件,提供运行时自我保护与反篡改能力,帮助移动应用抵御逆向、篡改与中间人攻击。

Stars: 0 | Forks: 0

# Flutter Secure App [![Pub Package](https://img.shields.io/pub/v/flutter_secure_app.svg)](https://pub.dev/packages/flutter_secure_app) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) 一个全面的 RASP(运行时应用程序自我保护)和反篡改 Flutter 插件,原生将 Android 与 iOS 的安全规则桥接到 Dart 层。确保逆向工程师、恶意软件和拦截器难以破坏应用环境。 ## 功能 - **越狱 / Root 检测:** 检测设备是否被越狱(iOS)或 Root(Android)。 - **模拟器 / 模拟器检测:** 防止应用在伪造的模拟器环境中运行。 - **调试器访问检测:** 如果附加了调试器,则暂停应用执行。 - **应用签名检查与签名验证:** 验证 Android 签名与 iOS Apple Team ID,防止应用重打包与篡改。 - **商店验证(Vending):** 检查应用是否从官方商店(App Store / Google Play)下载。 - **设备绑定与 ID 伪造防护:** 防止设备标识符被伪造。 - **SSL 固定拦截器:** 通过 SHA-256 指纹验证服务器证书,以防御中间人(MITM)攻击。 - **安全 HTTP 客户端(反代理):** 原生绕过系统代理,防止网络流量嗅探与拦截工具。 ## 安装 在 `pubspec.yaml` 中添加以下内容: ``` dependencies: flutter_secure_app: ^1.0.0 ``` ## 入门与用法 在应用根目录导入并初始化插件(建议在启动应用逻辑之前进行): ``` import 'package:flutter_secure_app/flutter_secure_app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await FlutterSecureApp().init( isEnabled: true, isProdEnv: true, // Toggles specific logic like Store Verification check // Granular Threat Toggles (Disable during development): checkJailbreakOrHooking: !kDebugMode, checkEmulator: !kDebugMode, checkDebugger: !kDebugMode, checkAppSignature: !kDebugMode, checkOfficialStore: !kDebugMode, checkDeviceBinding: !kDebugMode, checkDeviceIdSpoofing: !kDebugMode, // XOR Obfuscator (String Hiding) - Reverse Engineering Protection: // Pass your plain or decoded signatures arrays dynamically. validIosTeamIds: [ // e.g., '1234567890' or dynamic decoded strings MyGlobalSecureConfig.appleTeamId, ], validAndroidSignatures: [ // e.g., 'A1:B2:C3...' MyGlobalSecureConfig.androidSignature, ], onThreatDetected: (SecureAppThreatType threatType) { print('A security threat occurred: $threatType'); // For example, terminate app gracefully or block login. }, onException: (error, stackTrace) { print('Plugin internals threw an error: $error'); } ); runApp(MyApp()); } ``` ### 配置参数 | 参数 | 类型 | 默认值 | 描述 | |---|---|---|---| | `isEnabled` | `bool` | `true` | 完全启用或禁用插件引擎。 | | `isProdEnv` | `bool` | `true` | 仅启用生产环境检查,例如官方商店验证。 | | `checkJailbreakOrHooking` | `bool` | `true` | 检测设备是否被 Root / Jailbreak 或存在 Hook 框架。 | | `checkEmulator` | `bool` | `true` | 检测设备是否为模拟器。 | | `checkDebugger` | `bool` | `true` | 检测是否附加了调试器。 | | `checkAppSignature` | `bool` | `true` | 检测应用是否被重打包或使用未授权证书签名。 | | `checkOfficialStore` | `bool` | `true` | 验证安装来源是否为 App Store / Google Play(当 `isProdEnv` 为 `false` 时忽略)。 | | `validIosTeamIds` | `List` | `[]` | 允许的 Apple Team ID 列表。 | | `validAndroidSignatures` | `List` | `[]` | 允许的 Android 应用签名列表。 | | `onThreatDetected` | `Function` | `null` | 检测到威胁时触发的回调。 | | `onException` | `Function` | `null` | 插件内部异常/错误的回调。 | ### 网络安全(Dio 集成) 插件提供开箱即用的工具,用于流行的 `dio` 包,以保护网络层免受中间人(MITM)攻击与恶意代理嗅探。 **1. SSL 固定拦截器** 验证服务器证书的 SHA-256 指纹。若哈希不匹配,请求将被拒绝并触发 `SecureAppThreatType.sslPinningError`。 **2. 安全 HTTP 客户端适配器(反代理)** 强制 HTTP 客户端绕过系统代理配置,使得使用 Charles Proxy 或 Burp Suite 等工具拦截流量变得极为困难。 ``` import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_app/flutter_secure_app.dart'; final dio = Dio(); // 1. Add SSL Pinning Interceptor dio.interceptors.add(SslPinningInterceptor( allowedFingerprints: [ 'YOUR_SERVER_SHA256_FINGERPRINT_1', 'YOUR_SERVER_SHA256_FINGERPRINT_2', ], bypassForLocalhost: kDebugMode, // Bypass pinning for local API testing )); // 2. Set Secure HTTP Adapter (Anti-Proxy) dio.httpClientAdapter = SecureHttpClientAdapter.getAdapter(); ```
标签:Android安全, Flutter, ID防伪造, iOS安全, Jailbreak检测, MITM, Pub包, RASP, Root检测, SSL Pinning, Vending验证, 中间人攻击防护, 反代理, 反篡改, 后端开发, 商店验证, 安全HTTP客户端, 应用签名, 插件, 模拟器检测, 流量嗅探防护, 目录枚举, 移动安全, 移动应用防护, 签名校验, 设备检测, 设备绑定, 证书指纹, 调试器检测, 运行时保护, 逆向工程防护