Flutter安全保护插件jail_guard的使用

Flutter安全保护插件jail_guard的使用

jail_guard

jail_guard 是一个用于检测设备安全性的 Flutter 插件包。

Getting Started

这是一个包含平台特定实现代码的专用包,适用于 Android 和/或 iOS。

  • 实现了对 iOS 越狱设备的检测。
  • 实现了对 Android 设备 Root 的检测。

示例代码

import 'package:jail_guard/jail_guard.dart';

final _jailGuardPlugin = JailGuard();
var jailbreak = await _jailGuardPlugin.checkJailbreak();

完整示例 Demo

以下是一个完整的示例代码,展示了如何使用 jail_guard 插件来检测设备是否被越狱或 Root。

示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:jail_guard/jail_guard.dart'; // 导入 jail_guard 插件

void main() {
  runApp(const MyApp()); // 启动应用
}

class MyApp extends StatefulWidget {
  const MyApp({super.key}); // 构造函数

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState(); // 初始化状态
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown'; // 平台版本
  final _jailGuardPlugin = JailGuard(); // 创建 JailGuard 实例
  bool _jailbreak = false; // 是否检测到越狱或 Root

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState(); // 初始化平台状态
  }

  // 异步初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      // 获取平台版本
      platformVersion = await _jailGuardPlugin.getPlatformVersion() ?? 'Unknown platform version';
    } on PlatformException {
      // 捕获异常
      platformVersion = 'Failed to get platform version.';
    }

    bool jailbreak = false;
    try {
      // 检测设备是否越狱或 Root
      jailbreak = await _jailGuardPlugin.checkJailbreak();
    } on PlatformException {
      // 捕获异常
      jailbreak = false;
    }

    // 如果组件已从树中移除,则不更新 UI
    if (!mounted) return;

    setState(() {
      // 更新 UI
      _platformVersion = platformVersion;
      _jailbreak = jailbreak;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('jail_guard 示例'), // 设置标题
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center, // 主轴居中
            crossAxisAlignment: CrossAxisAlignment.center, // 交叉轴居中
            children: [
              Text('运行在: $_platformVersion\n'), // 显示平台版本
              Text(_jailbreak ? '设备已越狱或 Root' : '设备未越狱'), // 显示检测结果
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter安全保护插件jail_guard的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter安全保护插件jail_guard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


jail_guard 是一个 Flutter 插件,用于检测设备是否越狱(iOS)或 root(Android)。它可以帮助开发者识别设备是否处于不安全状态,从而采取相应的措施来保护应用的安全性。

安装 jail_guard

首先,你需要在 pubspec.yaml 文件中添加 jail_guard 依赖:

dependencies:
  flutter:
    sdk: flutter
  jail_guard: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

使用 jail_guard

jail_guard 提供了简单的 API 来检测设备是否越狱或 root。以下是一个基本的使用示例:

import 'package:flutter/material.dart';
import 'package:jail_guard/jail_guard.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Jail Guard Example'),
        ),
        body: Center(
          child: JailGuardChecker(),
        ),
      ),
    );
  }
}

class JailGuardChecker extends StatefulWidget {
  @override
  _JailGuardCheckerState createState() => _JailGuardCheckerState();
}

class _JailGuardCheckerState extends State<JailGuardChecker> {
  bool _isJailbroken = false;
  bool _isRooted = false;

  @override
  void initState() {
    super.initState();
    _checkDeviceSecurity();
  }

  Future<void> _checkDeviceSecurity() async {
    bool isJailbroken = await JailGuard.isJailbroken;
    bool isRooted = await JailGuard.isRooted;

    setState(() {
      _isJailbroken = isJailbroken;
      _isRooted = isRooted;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text(
          'Is Jailbroken: $_isJailbroken',
          style: TextStyle(fontSize: 20),
        ),
        SizedBox(height: 20),
        Text(
          'Is Rooted: $_isRooted',
          style: TextStyle(fontSize: 20),
        ),
      ],
    );
  }
}

解释

  • JailGuard.isJailbroken: 检测 iOS 设备是否越狱。
  • JailGuard.isRooted: 检测 Android 设备是否 root。

initState 中,我们调用 _checkDeviceSecurity 方法来检测设备的安全性,并在 UI 中显示结果。

处理检测结果

根据检测结果,你可以采取不同的措施来保护应用的安全性。例如,如果设备越狱或 root,你可以:

  1. 限制功能:禁用某些敏感功能,防止恶意用户滥用。
  2. 显示警告:提示用户设备不安全,建议他们恢复设备到正常状态。
  3. 强制退出:如果应用对安全性要求极高,可以直接退出应用。
if (_isJailbroken || _isRooted) {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text('Security Warning'),
        content: Text('Your device is jailbroken or rooted. This app may not function properly.'),
        actions: [
          TextButton(
            child: Text('OK'),
            onPressed: () {
              Navigator.of(context).pop();
            },
          ),
        ],
      );
    },
  );
}
回到顶部