3

データベースに接続する必要のあるSpringMVCWebアプリケーションがあり、データソースの資格情報は現在(開発中)アプリケーションコンテキスト構成ファイル、つまりWEB-INF \ spring\application_context.xmlに次のように保持されています。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="username" value="my_username" />
    <property name="password" value="my_password" />
    <property name="url" value="my_datasource_url" />
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
</bean>

このアプリケーションを公開されているTomcatサーバーにデプロイする前に、これらのデータベースクレデンシャルを世界中に公開したり、巧妙なハッカーに簡単に発見されたりしないようにしたいと思います。プレーンテキストとWEB-INFの下のXMLファイルで、物事をそのままにしておいて大丈夫ですか?そうでない場合は、この種のことのベストプラクティスはありますか?

よろしくお願いします。

4

3 に答える 3

5

フォルダに保存されているファイルWEB-INFは、定義上、外部からアクセスすることはできません。たとえば、JSPファイルを配置した場合、ユーザーはそのファイルに直接アクセスできません。たとえば、別のJSPからインポートまたはインクルードすることで参照できます。

とはいえ、クレデンシャルは安全ですが、にハードコーディングすることはお勧めできませんapplicationContext.xml。これらの資格情報をソース管理にプッシュしていますか?

.properties最も安全な方法は、ハードディスクのどこかにある外部ファイルで、機密性が高く頻繁に変更される構成を抽出することです。Springは完全に.propertiesファイルを読み取ることができます。

于 2012-06-06T20:30:21.053 に答える
2

考慮すべきもう1つのことは、JNDIルックアップを使用することです。JNDIはサーブレットコンテナ(この場合はtomcat)内に含まれ、Tomcatから現在デプロイされているWebアプリケーションを介してのみデータベースへの接続を許可します。

この方法では、ビルド管理と開発の間にサイロ化されたエクスペリエンスも作成されるため、私の比喩を理解すれば、開発には車の鍵がありません。

于 2012-06-06T20:59:33.277 に答える
1

起動時にパスワードを要求させることができます。しかし、通常、私が目にするのは、Webソフトウェア自体からのみアクセスできるように変更および変更されたxmlファイルのパスワードです。簡単で良い解決策はありません。

基本的な手順の1つは、tomcatユーザーがデータベースに必要なアクセス権のみを持っていることを確認することです。そのため、侵害された場合でも、被害は限定的です。

于 2012-06-06T20:28:31.873 に答える