43

私は Mac OS X 用の Twitter クライアントを作成しており、コンシューマ シークレットを持っています。私の理解では、この秘密鍵を共有すべきではありません。問題は、それを文字列リテラルとしてアプリケーションに入れ、次のように使用する場合です。

#define QQTwitterConsumerSecret @"MYSECRETYOUMAYNOTKNOW"

[[QQTwitterEngine alloc] initWithConsumerKey:QQTwitterConsumerKey consumerSecret:QQTwitterConsumerSecret];

アプリケーションのバイナリのデータ セクションにあります。ハッカーはこれを読んだり、アプリケーションを分解したりできます。

コンシューマ シークレットを安全に保存する方法はありますか? 暗号化する必要がありますか?

4

4 に答える 4

28

本当の完璧な解決策はありません。あなたが何をしても、それに専念している誰かがそれを盗むことができるでしょう。

iPhone / iPad / Android / mac/etc用のTwitterですら。そこに秘密鍵があります、彼らはおそらくそれをどういうわけか覆い隠しているでしょう。

たとえば、別のファイルや文字列などに分割できます。

注:16進エディターを使用すると、ASCII文字列をバイナリで読み取ることができます。これが最も簡単な方法です。それをいくつかの部分に分割するか、関数呼び出しを使用して秘密鍵を作成することにより、通常、そのプロセスをより困難にするように機能します。

于 2011-04-02T19:33:46.667 に答える
7

難読化するには、base64 エンコードするだけです。または、キーを保存するだけでなく、キーを生成することをお勧めします。次のように記述します。

char key[100];
++key[0]; ... ; ++key[0]; // increment as many times as necessary to get the ascii code of the first character
// ... and so on, you get the idea.

ただし、本当に優れたハッカーは、何があってもそれを見つけます。他人の目から本当に保護する唯一の方法は、安全なハッシュ関数を使用することですが、それを取得することもできません:)

于 2011-04-02T19:48:11.283 に答える
2

サーバー上だけで実行されないアプリケーションでは、シークレット API キーを使用しないでください。

完全に隠されていても..ネットワークを通過するデータをいつでも詮索できます。また、それはあなたのデバイスであるため、SSL を改ざんすることさえできます (デバイスの信頼できる CA リストに追加されたカスタム CA によって作成された証明書を持つ中間者)。または、SSL ライブラリにフックして、実際に暗号化される前にデータを傍受することもできます。

于 2011-04-02T19:24:06.970 に答える