2012-04-26 1 views
2

Spring MVCアプリケーション(または他のJava Web MVCアプリケーション内)にカスタム機密データを格納することをお勧めしますか?私はAPIキーを持っていて、私のコントローラーで利用できるようにする必要があるとしましょう。JavaおよびWeb開発:秘密鍵、APIキーなどのカスタム機密データを格納するための良い方法

静的クラスを使用して

の1-::私が考えることができ、いくつかの解決策

<context-param> 
    <param-name>apiKey</param-name> 
    <param-value>my-api-key</param-value> 
</context-param> 

、3-:コンテキストパラメータ(web.xml)を使用して

public final static String API_KEY = "my-api-key"; 

2 -カスタム.propertiesファイルを使用:

カスタム .xmlファイルを使用して
apiKey=my-api-key 

、4-

<entry key="apiKey">my-api-key</entry> 

その他のアイデア/ソリューションあなたは:)

感謝を持つことができます。

答えて

1

情報がどの程度安全であるかによって異なります。私はそれがJavaファイルをクラスファイルと配布の迅速検査にコンパイルされるオプション(1)

public final static String API_KEY = "my-api-key"; 

が比較的安全であると考えてい

あなたによって記載されているオプション

は、誰もがAPIを参照してくださいすることはできませんただし、ハードコーディングされ、再コンパイルせずに変更することはできません。

コードにハードコードされたパスワードを設定し、DESのようなものを使用してキーを暗号化することをお勧めします。暗号化されたキーは、プロパティファイルなどとして保存できます。

+0

あなたは正しい、良い点です。 – sp00m

+0

最終的に私が選んだ解決策です:) – sp00m

2

開発者/管理者がキーを見ることができてうれしい場合は、上のいずれも問題なく表示されます。

これは、誰もそれらを見ることができないため、ユーザーのパスワードには受け入れられません。パスワードは一方向ハッシュとして保存する方が良いでしょう。私はセキュリティ専門家ではありませんが、md5は弱いと考えられ、他の人はSHA-256のようなものを推奨しています。あなたはおそらく、検討すべき

他のものは以下のとおりです。

  • (ユーザー/グループは、ファイルの読み取り/書き込み可能)ファイル/ディレクトリのパーミッション
  • それはワイヤー上で暗号化する必要があるかどうか(その場合には、
+0

ユーザーのパスワード(たとえば)に関しては、自分のデータベースにSHAハッシュを保存しています。しかし、とにかく感謝:) – sp00m

1

春のフレームワークを使用している場合は、jasyptライブラリを使用することをお勧めします。私は特定のプロパティを暗号化し、レジストリまたは別の場所にマスターパスワードを外部化することができます。

このルートに行くときは、アプリケーションの外部にプロパティファイルを置いて、クライアントが暗号化されたプロパティを配置して、アプリケーションで配信されるデフォルトを上書きすることもお勧めします。

+0

ええ、面白いようです!私はそれがAPIキー(例えば)だけを格納するための良い解決策であるかどうかはわかりませんが、私は一見します。ありがとう! – sp00m

関連する問題