Engincode/flutter_secure_app
GitHub: Engincode/flutter_secure_app
一个 Flutter 插件,提供运行时自我保护与反篡改能力,帮助移动应用抵御逆向、篡改与中间人攻击。
Stars: 0 | Forks: 0
# Flutter Secure App
[](https://pub.dev/packages/flutter_secure_app)
[](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客户端, 应用签名, 插件, 模拟器检测, 流量嗅探防护, 目录枚举, 移动安全, 移动应用防护, 签名校验, 设备检测, 设备绑定, 证书指纹, 调试器检测, 运行时保护, 逆向工程防护