9

私のアプリケーションは、TwitterやFlickrなどの多くのWebサービスにアクセスします。これらのサービスのAPIキーを使用しているので、バイナリでそれらを難読化したいと思います。(私は著作権侵害などについてはあまり心配していません。これらのキーを秘密にしておく必要があります。)

それについて行くための最良の方法は何ですか?

それらをconstSecureStringとして保存すると、メモリから除外されますか?MSDNの説明によると、テキストは「不要になったときにコンピュータのメモリから削除されます」と書かれていますが、constは常にメモリ内にあるとは限りません。

Dotfuscatorは私のアセンブリでそれを覆い隠しますか?(私がそれを動作させることができると仮定します。)

4

3 に答える 3

8

私は最近、まさにこの状況に対処しなければなりませんでした。問題は、誰かが 16 進エディターを使用して簡単に見つけられないようにすることではなく、ネットワーク経由でさまざまな API に送信される場合です。フィドラーを実行してリクエストを監視するだけで、関係なくキーが表示されます。一部の API には、少し役立つ秘密/公開キーの利点があります。

私が思いついた唯一の解決策は、クライアントとターゲット API の間のプロキシとして機能する、外部でホストされた独自の Web サービスを作成することでした。これにより、アクティブ化/非アクティブ化できる各端末に個別のキーを生成することができ、機密データの大部分はリモート プロキシ アプリケーションに保存されていました。

幸運を!

〜「オバルティンを飲むのを忘れないで」

于 2011-02-08T22:02:08.963 に答える
4

アノンは正しいです。データを完全に保護する方法はありません。誰かがいつでもそれを手に入れることができます。

しかし、あなたはそれをできるだけ難しくしたいと思っています。これは、読みやすくするようなことをしないことを意味します。

  • レジストリキーに保存しない(例TwitterAPIKey REG_SZ
  • テキストファイル(例twitterkey.txt)またはiniファイルに保存しない
  • アプリケーションの.configファイルに保存されない
  • バイナリにプレーンテキストとして保存されない
  • 暗号化されていないものをバイナリに保存しない

これにより、デバッガーと(おそらく)アセンブリコードの知識が必要な人が残ります。

攻撃対象領域を大幅に減らしました。

最初の3つの提案に従うだけで、順調に進むことができます。

于 2011-02-08T21:36:32.190 に答える
0

おそらく、ユーザーに独自の API キーを使用するように依頼できます。自分自身を API に登録し、アプリの設定でキーを参照できます。

于 2011-02-08T22:11:35.600 に答える