2016-11-19 24 views
1

SSLとHTTPSを検索した後、私は何か非常に単純な操作を行う方法を完全に混乱させています。私はユーザー認証の種類がない小さなアプリを持っています。すべてのユーザーにシンプルなアプリが表示されます。HTTPリクエストでAPIキーを保護する

私はこのためにGoogle translate APIを使用しようとしています。私はAPIキーを翻訳していますが、それをどうやって保護するかは全く気にしていません。自分のiOSアプリからGoogle翻訳を直接呼びたいと思っており、apiドキュメント(https://cloud.google.com/translate/docs/reference/rest)によれば、apiKeyはリクエストパラメータ 'key'として提供されています。 APIのドキュメントでは、GoogleがSSLをサポートしているとも言いますが、明らかにアイデンティティを確認するためにiOSアプリケーションでSSLチェックを行っていません。私の質問は、翻訳APIキーを取得して乱用するMITM攻撃をどのように停止すればよいのでしょうか?私はチャールズを使ってみましたが、私は鍵が通過しているのをはっきりと見ることができます。

インターネットで読んだリソースはすべてSSLを使用していると言われています。しかし、Googleなどの人気のあるサービスを使用してiOSアプリでSSLを使用する方法の例はありません。

この単純なGET要求をどのようにして、私の鍵が盗まれるのを防ぐことができるかについてのアイデアはありますか?

EDIT:

SSLピン留めは、このためにやり過ぎです。私はSSLの使用については考えていませんが、iOSやGoogleなどのエンティティでどのように動作するかはわかりません(下記の@pvgの説明と同じです)。

+0

独自のSSLピンイングを実装することはできますが、APIキーを翻訳するには十分なオーバーキルです。それは誰もが盗むのに十分ではないし、交換するのも難しいことではない。 – pvg

+0

まさに、SSLピンイングを実装することは完全な過剰なものです。自分のサーバーをセットアップし、自分のSSL証明書を購入する必要があります。私の翻訳APIキーが貴重な理由は、誰かが簡単にそれを取得し、私に金銭を払うという唯一の目的で乱用する可能性があるからです。 – user1056585

+0

あなた自身のサーバーと証明書は必要ありませんが、もう一度、誰もあなたのAPIキーを盗むつもりはありません。そうした場合、あなたはその使用について責任を負わない可能性があります。あなたはスーパー・パラノイドの場合、これをGoogleと一緒に取ることができますが、その時点ではプログラミング上の問題ではありません。それはそれほどプログラミング上の問題ではありません。 – pvg

答えて

0

HTTPSを使用しようとしているのは、人々にあなたのAPIキーを持たせたくないからです。あなたのアプリがGoogle翻訳に直接接続する場合、そのAPIキーが保存される場所について教えてください。 :)

APIキーをアプリと一緒にGoogle翻訳に配布する必要があります。かなり多くの皆さんがそのようにしています。これは問題かもしれないし、問題ではないかもしれません、私はGoogle APIキーは通常ブラウザのクライアントにJavascriptで送られていると思いますので、それほど秘密ではありません。ユーザーから保護する唯一の方法は、独自のサーバーを実行して、サーバーに保存されているAPIキーを使用してアプリのクエリをGoogleの翻訳クエリに変換することです。

(これは明らかですが、HTTPSはトランスポートプロトコルであり、動作中のデータ、つまりネットワーク経由で送信されたデータは保護しますが、安静時のデータは保護しません。携帯電話)

誰もGoogleのサーバーを偽装していないかどうか、また証明書のピン設定が必要かどうかについては、証明書は、ほとんどのシナリオではこれが不可能であることを保証しています。 httpsウェブサーバー、基本フレームワーク、またはオペレーティングシステムと通信するために選択した標準的な方法のほとんどは、サーバー証明書を検証し、なりすましがないことを確認します。それが証明書のためのものです。証明書の固定は、不正な信頼されたルート証明書がクライアントにインストールされているような脅威を緩和するためのものです。例えば、企業ネットワークでは、企業のCAルート証明書が管理対象クライアントに信頼されたルートとしてインストールされ、その後、サーバープロキシはサーバーのキーと証明書を偽造することによってクライアントのSSLトラフィックを覗くことができます。会社のルート証明書があらかじめインストールされているため、これは可能です。これは攻撃者にとって不可能です。同様の脅威は、攻撃者が自分の証明書を信頼できるルートとしてクライアントにインストールすることを管理しているが、これはもはやあまり一般的ではない。脅威モデルに応じて保護する必要があるかもしれませんが、ほとんどの場合、標準のWebクライアントを使用してhttps APIと通信するだけで、サーバーの検証には十分です。https://google.comから何かをダウンロードすると、 .com。

+0

Gaborに感謝します。はい、私のAPIキーは、アプリケーションバンドル自体に格納され、誰もがその方法でキーを取得するために文字列ユーティリティを使用することができますビットを検索した後に気づいた。それで私は、私が推測するこの方法を傷つけることができます。私は単にAPIキーを保護するために、翻訳リクエストをGoogleに送信するだけの私自身のサーバーをセットアップする必要を避けようとしていました。 – user1056585

関連する問題