web-dev-qa-db-ja.com

AndroidアプリのGoogle APIキーを制限しても役に立たないのですか?

Googleによると、SHA-1証明書のフィンガープリントとパッケージの名前をGoogle Developers Consoleに追加して、APIキーの使用をAndroidアプリに制限することで、開発者がそれらのAPIキーがそれら以外のクライアントによって使用されていないことを確認してください。

thisthis によると、プログラマーは、Googleが次のようになるために、SHA-1フィンガープリントとパッケージ名をHTTPSリクエストヘッダーに追加するだけです。リクエストが「承認済み」アプリからのものであることを確認し、その結果としてサービスを提供できます。

しかし、SHA-1フィンガープリントとパッケージ名は公に知られているため、他の誰もがHTTPSリクエストヘッダーにそれらを非常に簡単に追加し、プログラムが制限を非常に簡単に迂回して、Googleによって自分自身を確認することもできます「承認済み」アプリとして!

そのため、一般に知られている情報に基づくこの種の制限の有用性がわかりません!

5
user9514066

Domenukkがコメントで述べたように、Google APIキーの制限により、他のユーザーが自分のアプリにAPIキーをパッケージ化できなくなります。これは、Googleが受け取ったAPI呼び出しが、Google APIアカウントにキーを追加した開発者によってパッケージ化されたアプリケーションからのものであることを確認するための単なる方法です。

しかし、あなたが正しく指摘したように、それは簡単に回避できます。たとえば、 SOに関するこの回答 は、Android Google APIキーを使用してリクエストを作成する方法を示しています。したがって、制限を回避することはかなり簡単です。

ただし、利点は攻撃者にかかるコストです。同様の質問が HTTPリファラー に対して求められたので、質問の関連部分を引用します(リファラーヘッダーを置き換えてください) withSHA1フィンガープリント):

そのため、悪意のあるエージェントがリファラーヘッダーをコピーできるからといって、そのための時間や傾向がない可能性があります。有効なリファラーヘッダーは、コンサートリストバンドのようなものです。それらを偽造したり、リストバンドをチェックしている警備員の周りに忍び込んだりできますか?もちろん可能ですが、バンドが役に立たなくなるわけではありません。

攻撃者のコストが上昇します。

1
verybadalloc