2

そのため、ユーザーがコンテンツを追加、編集、評価できるようにするアプリを作成していますが、登録を強制したくありません。代わりに、デバイス ID またはデバイス トークンを使用してそれらを識別することを計画していました。iPhone版とAndroid版の両方を作る予定なので、一般的な解決策を探していますが、iPhone版の方が優先度が高いので、iPhone固有の解決策も歓迎します。

問題は、偽のデバイス ID や他の誰かのデバイス ID を送信して、誰かが私の Web サービスを使用できるようにしたくないということです。

クライアントは、正しいデバイス ID を提供していることをサーバーにどのように証明しますか?

4

2 に答える 2

5

理論的にはできません。デバイスIDは特に秘密ではなく、ほとんどの場合、簡単になりすますことができます。Androidに関しては、そのOSには信頼できるデバイスIDがまったくありません-ここで厄介な詳細を参照してください:一意のAndroidデバイスIDはありますか?

信頼できるのは、隠すことによるセキュリティだけです。コードをリバースエンジニアリングして認証プロトコルを分析するのに十分な人がいないことを期待しています。そして、コードを開示しないことはオプションではありません-結局のところ、あなたはアプリを配布しています。

とはいえ、特に安全ではない認証方法の1つは、デバイスIDと、クライアントコード文字列(共有シークレット)にハードコードされたシークレットと連結されたデバイスIDのハッシュを送信することです。サービスにはシークレットのコピーが含まれ、ハッシュを再計算し(提供されたデバイスIDを使用して)、ハッシュを照合します。秘密のコードを掘り下げるだけで、プロトコル分析によって破壊することはできません。ただし、リプレイ攻撃に対して脆弱です。コード内の秘密を自由に難読化してください。たとえば、使用直前に別々の場所に保管されているパーツから組み合わせてください。

より強力なソリューションを得るには、デバイスではなくユーザーを認証します。これは顧客次第であり、ビジネスの性質によって異なります。

于 2011-01-12T17:08:18.823 に答える
0

私は Android の専門家ではありませんが、IMEIコードはデバイスに固有のものだと思います。どうすればそれを読み取って送信できるかわかりません。

于 2011-07-14T20:00:19.023 に答える