2

Spring MVCアプリケーション内(または実際には他のJAVA Web MVCアプリケーション内)にカスタム機密データを保存するために何をアドバイスしますか?APIキーがあり、コントローラーで使用できるようにする必要があるとします。私が考えることができるいくつかの解決策:

1-静的クラスの使用:

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

2-コンテキストパラメータの使用(web.xml):

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

3-カスタム.propertiesファイルの使用:

apiKey=my-api-key

4-カスタム.xmlファイルの使用:

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

5-あなたが持つことができる他のアイデア/解決策:)

ありがとう。

4

3 に答える 3

2

開発者/管理者がキーを見ることができることに満足している場合は、上記のいずれも問題ないようです。データベースやディレクトリなどに保存することもできます。

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

おそらく考慮すべき他のことは次のとおりです。

  • ファイル/ディレクトリのアクセス許可(ユーザー/グループがファイルの読み取り/書き込みを行うことができます)
  • 有線で暗号化する必要があるかどうか(この場合、公開鍵/秘密鍵が必要になります)
于 2012-04-26T08:25:48.140 に答える
1

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

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

于 2012-04-26T08:40:06.907 に答える
1

その情報をどの程度安全にする必要があるかによって異なります。

あなたがリストしたオプションでは、私はオプション(1)を信じています

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

javaファイルがクラスファイルにコンパイルされ、ディストリビューションをすばやく検査しても誰もapi-keyを見ることができないため、比較的安全ですが、ハードコーディングされ、再コンパイルせずに変更できないという欠点があります。

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

于 2012-04-26T08:45:49.797 に答える