3

アプリケーションに影響を与える機密データをデータベースに追加するために、PHP ページとの接続を必要とする Android アプリケーションがあります。データの送信先の URL を見つけて操作するだけです。

IMEI に基づいて登録を作成することを考えましたが、それでも悪意のある目的でそれを操作できます。

私はOAuthもチェックしましたが、それがどのように機能するのか、そしてそれが私の状態に役立つかどうかはよくわかりませんでした. アプリケーションを完全に保護するにはどうすればよいですか? 前もって感謝します!

編集: ところで、私がここで達成しようとしているのは、リクエストが他のデバイスからではなく、Android から送信されていることを確認することです。

4

2 に答える 2

1

私のアプリケーションは「生成された」データに基づいているため、ユーザー自身ではなくデータを送信するアプリケーションであることを確認しようとしています。このデータを操作できると、アプリケーションが正常に動作しなくなります(データベースに挿入されたすべてのデータを個人的に確認してください)。

送信者の身元を100%確実にする確実な方法はありません。基本原則は「クライアントを決して信用しない」です。外部からのメッセージは偽造される可能性があると想定する必要があります。一般的に、アプリケーションは、誤動作することなくあらゆる種類の要求を受け入れ、データを検証し、故障しているものをすべて拒否できる必要があります。最終的には、操作されたデータを送信しようとしている送信者をブロックすることまで可能です。

受信サーバーを保護する代わりに送信者を確認しようとすることは良い習慣ではなく、常に脆弱なままになります。

コメントで言うように、あなたが個人的に行うのではなく、アプリが受信データを自動的に検証する方法はありませんか?アプリが実行していることについてさらに詳細を提供すれば、コミュニティがその側面を支援できるかもしれません。

于 2012-10-27T11:09:33.987 に答える
1

デジタル署名プロセスの典型的なシナリオを説明しています。非対称暗号化に精通している場合は、Android アプリケーションに秘密鍵を割り当て、PHP サーバーに対応する公開鍵を用意する必要があります。

Android アプリが HTTP リクエストを送信するとき、デジタル署名を生成する必要があります。これは通常、秘密鍵で暗号化する前に、リクエストのダイジェストを生成することによって行われます。サーバーが要求を受信すると、公開鍵を使用してダイジェストを取得する必要があります。また、それ自体で (Android アプリと同じロジックを使用して) ダイジェスト値を生成し、2 つの値を比較する必要があります。

問題は、Android クライアントが秘密鍵にアクセスできるようにする方法です。侵入者がこのキーをなんとか盗めば、クライアントになりすますことができます。1 つのアプローチは、リバース エンジニアリングが困難になるように、ソース コード内のキーを「隠す」ことです (これは芸術です)。これらのキーが侵害された場合に新しいキーを使用できるように、これらのキーを無効にすることが可能でなければなりません。

于 2012-10-29T18:29:02.497 に答える