Open LeoAndo opened 1 year ago
iOSやAndroidではアプリが既存機能を使用していないか、間違って使用していても使用できる様々な機能が用意されている。 それは不適切な使用法と呼ばれている。
具体例:
解決方法:
具体例:
解決方法:
機密データの例:
flutter_secure_storage Flutter Secure Storage は、安全なストレージにデータを保存するための API を提供します。 Keychain は iOS で使用され、KeyStore ベースのソリューションは Android で使用されます。
hive 純粋な Dart で記述され、AES-256 を使用して強力に暗号化された軽量で超高速のキー値データベース。
スナップショット保護には以下のパッケージを使うと良い。 secure_application
具体例:
解決方法:
上記パッケージを使うと、 証明書のピン留めにより、モバイル アプリケーションは、期待値 (ピン) と一致する有効な証明書を持つサーバーのみに通信を制限できます。この「期待される」値と一致しないサーバーとの通信が試行された場合、接続はすぐに終了します。
古典的な例は、モバイルがアクセストークンをリレーせずに匿名で実行するバックエンドAPIサービスリクエストです。 さらにパスワードをクリアテキストでローカルに保存するアプリがまだあります。
具体例:
解決方法:
パッケージ local_auth
安全でないアルゴリズムや非推奨のアルゴリズムの使用
https://youtu.be/DYwn4KciL1U?list=PLjxrf2q8roU3LvrdR8Hv_phLrTj0xmjnD&t=769 これらの代わりに、 開発者の身元を公開する可能性のあるデータはすべて暗号化する必要があります。 key.jks や keystore.properties などの機密ファイルを GPG で暗号化します。 リポジトリ内の暗号化されていない機密データを追跡することは避けてください。
パッケージ (プレーンテキストの暗号化) https://pub.dev/packages/encrypt https://pub.dev/packages/crypt
承認:識別された人物の検証を扱う。
具体例: ユーザーの確認と権限の付与に失敗します。 クライアント側の承認。
解決方法: バックエンドでリクエストを確認します。 デバイス上のデータや保存したものではなく、バックエンドの情報を使用して、認証されたユーザーの役割と権限を検証します。
具体例: コードの品質をチェックせずにサードパーティ ライブラリを統合する。 自動化されたツールではなく、手動のチェックに依存しています。
解決方法: 適切なコーディング プラクティスを実施する (一貫したパターンを考え出す)。 静的コード分析を実行します。 自動化ツールを使用して、メモリリーク、バッファ オーバーフロー、およびコード実行をテストします。
具体例: ハッカーが悪意のあるコンテンツを含むようにアプリのバイナリを変更し、バックドアをインストールします。
解決策: チェックサム、デジタル署名、コードの強化、およびその他の検証方法の実装により、不正なアプリの実行を防止する改ざん防止技術を実装します。
package https://pub.dev/packages/flutter_jailbreak_detection
具体例: IDA Pro や Hopper などのツールを使用してコードの難読化を解除します。
解決策: アプリケーションを逆コンパイルできるかどうかを確認してください。 堅牢な難読化 (メタデータを含む) を確保します。 バイナリ パッケージを使用して、攻撃者がコードを逆コンパイルできないようにします。 デバッグ ツールをブロックします。
具体例: 開発者が誤ってパスワードをハイブリッド アプリのコメントとして含める場合があります。 テスト中に 2 要素認証を無効にします。
解決策: アプリの構成設定を調べて、非表示のスイッチを見つけます。 すべてのテスト コードがアプリの最終製品ビルドに含まれていないことを確認します。 モバイル アプリがアクセスするすべての API エンドポイントを調べて、これらのエンドポイントが適切に文書化され、公開されていることを確認します。 すべてのログ ステートメントを調べて、バックエンドについて過度に説明的なものがログに書き込まれていないことを確認します。
https://www.youtube.com/watch?v=DYwn4KciL1U&list=PLjxrf2q8roU3LvrdR8Hv_phLrTj0xmjnD&index=26
Flutter セキュリティリスクTop10
詳しい話はここにまとまっている。 https://docs.flutter.dev/security