ハッキング防止アプリを確保するためのモバイルアプリセキュリティのベストプラクティス
公開: 2018-11-27革新的なモバイルアプリケーションの構築は、モバイルアプリ開発の最初のステップにすぎません。 アプリを作成すると、アプリ開発に続く何千もの必須プロセスがあります。 モバイルアプリのセキュリティにおけるこれらの多くの重要なステップの1つ。
この記事では、開発が完了した後に実装する必要のあるモバイルアプリのセキュリティ対策について説明します。
過去10年間で、私たちは皆、モバイルアプリ開発業界がどのように成長したかを目の当たりにしてきましたが、サイバー犯罪も同様です。 そして、これらの犯罪は、アプリを保護するための特定の措置を講じずにPlayストアまたはAppStoreにアプリを送信することができない段階に私たちを導きました。
ただし、セキュリティ対策の内容については、まず、これらのアクションを実行する必要がある理由と、モバイルアプリ開発業界を悩ませている潜在的なアプリセキュリティの問題を理解する必要があります。 実際の見積もりについては、事実を見てみましょう。
モバイルアプリのセキュリティには、マルウェアや脅威からモバイルアプリを保護するだけではありません。 まず、セキュリティ対策をよりよく理解するために、OWASPモバイルアプリのセキュリティの脅威のいくつかを特定しましょう。
モバイルアプリのセキュリティが必要な理由:潜在的な脅威とそのソリューション
悪意はあるもののアプリ開発の世界に現れる脅威は、モバイルアプリケーションを保護するための簡単な手順で解決できます。 モバイルアプリの主なセキュリティ問題を見てみましょう。
1.サーバー制御の障害:
アプリと携帯電話デバイスの外部のユーザーとの間で行われる通信は、サーバーを介して行われます。 そして、そのようなサーバーは、世界中のハッカーの主な標的です。 サーバーの脆弱性の背後にある主な理由は、開発者が必要なサーバー側のセキュリティを考慮に入れて見落とすことがあるためです。 これは、モバイルアプリケーションのセキュリティに関する考慮事項に関する知識の不足、セキュリティ目的の予算の少なさ、またはクロスプラットフォーム開発によって引き起こされた脆弱性が原因で発生する可能性があります。
解決:
サーバーを保護するための最も重要なステップは、自動スキャナーを使用してアプリをスキャンすることです。 それ以外の場合、これらのスキャナーは、ハッカーがアプリの脆弱性を掘り起こし、それらを悪用するために使用される可能性があります。 自動スキャナーは、解決が容易な一般的な問題やバグを明らかにします。
2.バイナリ保護の欠如:
これは、 OWASPアプリのセキュリティに関する主要な問題の1つでもあります。これは、モバイルアプリのバイナリ保護が不足している場合、ハッカーや攻撃者がアプリコードを簡単にリバースエンジニアリングしてマルウェアを導入する可能性があるためです。 また、同じものの海賊版アプリケーションを再配布し、脅威を注入することもできます。 これらすべてが、データの盗難やブランドイメージの損傷、その結果としての収益の損失などの重大な問題につながる可能性があります。
解決:
バイナリファイルを保護するには、バイナリ強化手順を展開することが重要です。 この手順の一環として、バイナリファイルが分析され、それに応じて変更されて、一般的なモバイルアプリのセキュリティの脅威から保護されます。 この手順では、ソースコードをまったく使用せずにレガシーコードを修正します。 モバイルアプリのセキュリティプロセスで作業している間は、ジェイルブレイク、チェックサムコントロール、デバッガー検出コントロール、および証明書のピン留めを検出するためのセキュリティコーディングを確保することが重要です。
3.データストレージの不安定さ:
モバイルアプリのセキュリティに共通するもう1つの大きな抜け穴は、安全なデータストレージシステムがないことです。 実際、モバイルアプリの開発者は、内部データをクライアントストレージに依存するのが一般的です。 ただし、ライバルがモバイルデバイスを所有している間は、この内部データに非常に簡単にアクセスして使用または操作できます。 これは、個人情報の盗難やPCI(外交政策違反)などのいくつかの犯罪につながる可能性があります。
解決:
ここで考慮すべきアプリのセキュリティ対策の1つは、OSの基本レベルの暗号化の上に追加の暗号化レイヤーを構築することです。 これにより、データのセキュリティが大幅に向上します。
4.トランスポート層の保護が不十分:
トランスポート層は、クライアントとサーバーの間でデータ転送が行われる経路です。 この時点で適切なモバイルアプリのセキュリティ標準が導入されていない場合、ハッカーは内部データにアクセスしてデータを盗んだり変更したりする可能性があります。 これは、個人情報の盗難や詐欺などの重大な犯罪につながります。
解決:
トランスポート層のセキュリティを強化するには、iOSおよびAndroidアプリにSSLピン留めを組み込む必要があります。 これに加えて、通常の暗号スイートの代わりに業界標準の暗号スイートを使用できます。 さらに、SSLセッションが混在しているためにユーザーのセッションIDが公開されないようにしたり、証明書が無効な場合にユーザーに警告したり、サードパーティの分析のSSLバージョンを使用したりすることは、ユーザーを危険なセキュリティ違反から救うことができる一般的な方法です。
5.意図しないデータの漏洩:
重要なモバイルアプリケーションがモバイルデバイスの脆弱な場所に保存されている場合、意図しないデータ漏洩が発生します。 たとえば、アプリは他のアプリやデバイスから簡単にアクセスできる場所に保存され、最終的にはアプリのデータ侵害や不正なデータ使用につながります。
解決:
ロギング、アプリのバックグラウンド、キャッシュ、ブラウザのCookieオブジェクト、HTML5データストレージなどの一般的なデータ漏洩ポイントを監視します。
これらの5つのモバイル開発セキュリティの脅威に加えて、安全なモバイルアプリを構築する上で一般的に発生する障害がいくつかあります。 はい、どうぞ:
- 多要素認証の欠如–このプロセスは、アプリケーション内に人を入れる前に、複数のセキュリティ層を提供します。 個人的な質問、OTP、SMS構成、またはその他の手段に答えている可能性があります。 多要素認証がない場合、いくつかの問題が発生する可能性があり、アプリを安全にする方法に答える上で重要な部分になります。
- 適切に暗号化できない–モバイルアプリケーションのセキュリティのベストプラクティスの重要な要素は、適切な暗号化を確保することです。 それができないと、コードの盗難、知的財産の盗難、プライバシー侵害など、さまざまな問題が発生する可能性があります。
- 悪意のあるコードインジェクション–フォームなどのユーザー生成コンテンツは、脅威として見過ごされがちです。 ユーザーがIDとパスワードを追加すると、アプリはサーバー側のデータと通信して情報を認証するとします。 これで、ユーザーが入力する文字を制限しないアプリは、サーバーにアクセスするためのコードを挿入するリスクにさらされます。
- リバースエンジニアリング–これはすべての安全なモバイルアプリケーション開発の悪夢です。 このアプローチを使用して、アプリがバックエンドでどのように機能するかを示し、ソースコードなどを変更しながら暗号化アルゴリズムを明らかにすることができます。
- 安全でないデータストレージ–安全でないデータストレージはアプリ内の複数の場所で発生する可能性があります– Cookie、バイナリデータストア、SQLデータベースなど。ハッカーがデータベースまたはデバイスにアクセスすると、正規のアプリを変更してマシンに情報を取得する可能性があります。
すべてのモバイルアプリケーションを悩ませている一般的な脅威と、これらの問題を回避するために従うべきいくつかのベストモバイルアプリセキュリティプラクティスを確認した後、AndroidおよびiOSモバイルアプリケーションのセキュリティに関する詳細に移りましょう。
Androidアプリを安全にする方法は?
選択する効果的なAndroidアプリのセキュリティのベストプラクティスのいくつかは次のとおりです。-
外部ストレージ上のデータの暗号化–
一般的に、デバイスの内部ストレージ容量は制限されています。 また、この欠点により、ユーザーはデータを保護するためにハードディスクやフラッシュドライブなどの外部デバイスを使用するように強制されることがよくあります。 また、このデータは、機密データで構成されている場合もあります。 外部ストレージデバイスに保存されているデータには、デバイスのすべてのアプリから簡単にアクセスできるため、データを暗号化された形式で保存することが非常に重要です。 モバイルアプリ開発者が最も広く使用している暗号化アルゴリズムの1つは、AESまたはAdvanced EncryptionStandardです。
機密データに内部ストレージを使用する–
すべてのAndroidアプリケーションには、内部ストレージディレクトリがあります。 また、このディレクトリに保存されているファイルは、ファイルの作成にMODE_PRIVATEモードを使用しているため、非常に安全です。 簡単に言うと、このモードでは、特定のアプリのファイルに、デバイスに保存されている他のアプリケーションからアクセスできないようにします。 したがって、これはモバイルアプリ認証のベストプラクティスの1つです。
HTTPSの使用–
アプリとサーバー間で行われる通信は、HTTPS接続を介して行う必要があります。 多くのAndroidユーザーは、公共エリアでいくつかのオープンWiFiネットワークに接続していることが多く、HTTPSの代わりにHTTPを使用すると、デバイスが多くの悪意のあるホットスポットに対して脆弱になり、HTTPトラフィックの内容が簡単に変更され、デバイスのアプリが予期しない動作をする可能性があります。
SMSの代わりにGCMを使用する–
GoogleクラウドメッセージングまたはGCMが存在しなかった当時は、サーバーからアプリにデータをプッシュするためにSMSが使用されていましたが、現在はGCMが主に使用されています。 ただし、まだSMSからGCMに切り替えていない場合は、切り替える必要があります。 これは、SMSプロトコルが安全でも暗号化されていないためです。 さらに、SMSは、ユーザーのデバイス上の他のアプリからアクセスして読み取ることができます。 GCM通信は、クライアント側で定期的に更新される登録トークンによって認証され、サーバー側で一意のAPIキーを使用して認証されます。
その他の主要なモバイルアプリ開発セキュリティのベストプラクティスには、ユーザー入力の検証、個人データの必要性の回避、アプリを公開する前のProGuardの使用などがあります。 アイデアは、可能な限り多くのマルウェアからアプリユーザーを保護することです。
iOSアプリを安全にする方法は?
従うべきiOSアプリのセキュリティのベストプラクティスのいくつかは次のとおりです。-
データの保存–
アプリのアーキテクチャを大幅に簡素化し、セキュリティを向上させるための最善の方法は、アプリデータをディスクに書き込んだり、リモートサーバーに送信したりするのではなく、メモリに保存することです。 データをローカルに保存することが唯一の選択肢である場合でも、複数の方法があります。-
キーホルダー:
頻繁にアクセスする必要のない少量の機密データを保存するのに最適な場所は、キーチェーンです。 キーチェーンに保存されているデータはOSによって管理されますが、他のアプリケーションからはアクセスできません。 –キャッシュ:データをiCloudまたはiTunesにバックアップする必要がない場合は、アプリケーションサンドボックスのキャッシュディレクトリにデータを保存できます。 –デフォルトシステム:デフォルトシステムは、大量のデータを保存するための便利な方法です。
ネットワークセキュリティ:
Appleはセキュリティとプライバシーポリシーで知られており、何年もの間、このレベルに到達するために取り組んできました。 数年前、AppleはApp Transport Securityを導入しました。これは、サードパーティのモバイルアプリに、より安全な接続、つまりHTTPSを介してネットワーク要求を送信するように強制します。
機密情報のセキュリティ–
モバイルアプリの大部分は、名簿や場所などの機密性の高いユーザーデータを使用します。ただし、開発者は、ユーザーに要求しているすべての情報が実際にアクセスするために必要であるかどうかを確認する必要があります。重要なのは、保存することです。 したがって、必要な情報にネイティブフレームワークを介してアクセスできる場合、その情報を複製して保存することは冗長です。
これで、ハックプルーフアプリのAndroidとiOSの両方のモバイルアプリのセキュリティプラクティスを見てきました。 しかし、それが書かれているほど簡単な開発はあり得ません。 プロセス中に直面する特定の課題は常にあります。 前進して、米国のほぼすべてのトップアプリ開発会社が直面し解決している課題について学びましょう。
モバイルアプリのセキュリティに関連する課題
外部マルウェアからのセキュリティに対して十分な対策が講じられていない場合、モバイルアプリがどれほど脆弱になる可能性があるかについての実証済みの記録があります。 以下は、モバイルアプリのセキュリティテストが要件に従って完了していない場合にいつでも発生する可能性のある課題です。
デバイスの断片化–
アプリストアでアプリケーションをリリースする前に従う必要のある重要なプロセスがあります。 さまざまな解像度、機能、機能、制限をカバーするさまざまなデバイスをモバイルアプリのテスト戦略に組み込む必要があります。 デバイス固有の脆弱性を検出すると、アプリ開発者はアプリのセキュリティ対策を一歩前進させることができます。 デバイスだけでなく、人気のあるOSのさまざまなバージョンも、考えられるすべての抜け穴をカバーするために、アプリのリリース前にカバーする重要なステップです。
弱い暗号化–
弱い暗号化の場合、モバイルデバイスは利用可能なデバイスからのデータの受け入れに対して脆弱です。 マルウェアを使用する攻撃者は、パブリックモバイルデバイスのオープンエンドを絶えず探しています。暗号化プロセスの強力なスーツに従わない場合、アプリはそのオープンエンドになる可能性があります。 したがって、強力な暗号化に力を注ぐことも、ハッキングに強いモバイルアプリを作成するための最も優れた方法の1つです。
より弱いホスティングコントロール–
これは主に、企業の最初のモバイルアプリの開発中に発生します。これにより、通常、データはサーバー側のシステムに公開されたままになります。 したがって、アプリをホストするために使用されているサーバーには、権限のないユーザーが重要なデータにアクセスするのを防ぐための十分なアプリセキュリティ対策が必要です。
モバイルアプリケーションのセキュリティガイドラインのチェックリスト
安全なアプリケーションを構築する際に、すべてのモバイルアプリ開発会社が従うことはたくさんあります。 これが私たちがよく従うチェックリストです–
- サーバー側認証を使用する
- 暗号化アルゴリズムを使用する
- ユーザー入力がチェック基準を満たしていることを確認します
- データをバックアップする脅威アルゴリズムを作成する
- リバースエンジニアリングを停止するための難読化
モバイルアプリのセキュリティ監査を通じて、未知のソースからの攻撃に対してハッキング防止のモバイルアプリを作成する方法はたくさんあり、セキュリティ対策の量は決して十分ではありません。 モバイルアプリ開発のセキュリティのベストプラクティスを検討することは、それを実現する1つの方法です。 今日、デジタルの世界は誰もが利用できるように公開されており、マルウェアやセキュリティ違反から十分に安全なユーザーはいませんが、これらの対策により、デジタルデバイスでの個人データの安全性が確保されます。