0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flutterで作る安全な権限制御【Part 4】Flutterアプリの反編譯リスクとセキュリティ対策

Last updated at Posted at 2025-08-06

はじめに

本シリーズの Part 1〜3 では、Flutter アプリにおける RBAC 権限制御の仕組み、データ構造、UI制御実装までを紹介してきました。

今回は、その仕組みを 「攻撃者に逆コンパイルされて操作されてしまう」 という前提で、

どう守るか?
どこまで前端で信用できるか?
API は本当に安全か?

を整理していきます。

リスク:Flutter アプリは逆コンパイルされる

実際に起こりうること:

  • flutter build apk したバイナリは 逆アセンブル/逆解析可能
  • permissions.contains('user:view') の判定を強制的に true に書き換え
  • 非表示のページやボタンに無理やり遷移・表示
  • REST API を直接叩く
if (permissions.contains('admin')) {
  return AdminPage(); // ← 改造される
}

解決の原則:「前端は信用できない」

UI の表示制御は UX のため、
実行制御(認可)はすべて後端で行うべきです。

対策①:すべてのAPIに認可ロジックを入れる

@Get("/users")
fun listUsers(@AuthUser user: User): List<User> {
    if (!user.permissions.contains("user:view")) {
        throw ForbiddenException("No permission");
    }
    return userService.getAll()
}

攻撃者が Flutter を改造して UI を出しても、
API が拒否すれば意味がない!

対策②:Flutter 側での安全対策まとめ

項目 方法
通信の保護 全通信に HTTPS を強制
トークン署名 JWT(HMAC/RSA)を利用し、不正再送信を防ぐ
Secure Storage 権限やトークンを EncryptedSharedPreferences 等に保存
改竄防止(難読化) flutter build apk --obfuscate --split-debug-info を使用
デバイスの検知(任意) Jailbreak / Root 検出やエミュレータのブロック
アプリ完全性チェック(上級) hash 検証 / tamper check / integrity validation

攻撃に備えたセキュリティ設計の心得

守るべきポイント
UI表示 権限に応じて見せない(ただし飾り)
アクション 必ずAPIで再チェック
通信 HTTPS / JWT / 署名 / リプレイ防止
保存領域 SecureStorage を使用して機密情報を守る
アプリ体 難読化・改竄検知・アンチデバッグなどを導入

最低限やるべきセキュリティ

  • APIにはすべて認可ロジックを入れる

  • トークンと権限情報は SecureStorage に保存

  • HTTPSを必ず使用する(常時SSL)

  • Flutterビルド時に難読化(--obfuscate)を有効に

  • ログイン時に取得した権限を毎回信頼せず、再チェックする

攻撃者の視点でチェックする

  • App を逆コンパイルして UI を改変

  • 権限チェックの if を無視してページ表示

  • REST API に直接 POST して操作

  • ログイン後の JWT を再利用して別端末から操作
    これらは全て「後端が正しく認可していれば通らない」
    → APIが最終防衛ライン

シリーズリスト

Flutterで作る安全な権限制御【Part 1】業界標準と設計指針のすべて

Flutterで作る安全な権限制御【Part 2】RBACを支えるデータベース設計とER図(Mermaid付き)

Flutterで作る安全な権限制御【Part 3】ページとボタンを権限で制御する実装編(go_router × Riverpod)

Flutterで作る安全な権限制御【Part 4】Flutterアプリの反編譯リスクとセキュリティ対策
Security Flutter obfuscation

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?