sql >> データベース >  >> RDS >> Mysql

Java/Mysqlサーバープログラムでの電子メールアカウントのパスワードストレージ

    SMTPが認証を必要としないことを指摘するコメントは正しいです。そうは言っても、3つすべて サーバーがコモディティのハードウェアとソフトウェアを使用していると仮定すると、指定したオプションのうちの1つは安全ではありません。元の注文には従いませんが、それぞれが安全でない理由を説明します。

    誰かがサーバーを盗んだ場合はどうなりますか?次に、ファイルまたはデータベースを開いてパスワードを読み取るだけで、会社のすべての重要な情報にすぐにアクセスできます。したがって、サーバーを昼夜を問わず武装した警備員がいない限り、これはすでにかなり安全ではありません。

    しかし、それはさらに悪化します。攻撃に対して完全に無防備なコンピュータシステムはありません。過去数年間に広く知られているいくつかの攻撃(たとえば、SonyのPlayStation Network)は、攻撃者が物理的なアクセスなしにディスクファイルやデータベースのコンテンツにアクセスできることを示しています。さらに、あなたの質問から、問題のサーバーは外部からのパケット(HTTP要求、受信メールなど)を受け入れるように意図されているようです。これにより、攻撃対象領域が拡大します。

    これは魅力的ですが、オプション2またはオプション3よりもさらに有害です。1つには、プライベートの最終文字列フィールドがJavaコンパイラによって生成された.classファイルに格納されるため、このオプションを使用すると、暗号化されていないパスワードがすでに格納されています。サーバーのハードドライブ上。オプション2または3のようにサーバーを侵害した後、攻撃者はjavapを実行するだけです。 .classファイルからプレーンテキストのパスワードを取得するため。

    ただし、このアプローチにより、攻撃対象領域がさらに広がります。パスワードがソースコードの一部として保存されている場合、突然、コードに取り組んでいるすべての開発者がパスワードを利用できるようになります。最小特権の原則の下では、開発者は追加のパスワードを知らないはずです。ここには非常に正当な理由があります。 開発者のいずれかが マシンが外部から盗まれたり侵害されたりした場合、攻撃者は侵害されたマシンのハードドライブを調べて、プレーンテキストのパスワードを取得できます。次に、ソース管理があります。ソース管理の非常に重要な利点の1つは、以前のバージョンのコードを検査できることです。したがって、将来的に安全な方法に切り替えたとしても、パスワードがソース管理に入ったことがある場合は、ソース管理サーバーが潜在的な攻撃ポイントになります。

    これらすべての要素を合計すると、HTTP /メールサーバーのセキュリティが一流であっても、オプション1は攻撃対象領域を大幅に増加させるため、HTTP/メールサーバーのセキュリティは実際には役に立ちません。

    追加の詳細:最初に、「サーバーがコモディティのハードウェアとソフトウェアを使用していると仮定して」と指定しました。コモディティのハードウェアとソフトウェアを使用していない場合は、読み取り専用ストレージからの起動や暗号化されたデータベースのみの使用などを行うことができ、起動のたびに復号化キーを提供する必要があります。その後、復号化された情報はメモリにのみ存在し、ディスクに書き込まれることはありません。このように、サーバーが盗まれた場合、攻撃者はサーバーのプラグを抜く必要があるため、これまでメモリにしかなかった復号化された情報をすべて失います。この種のセットアップは、Kerberos KDC(セキュリティを強化するためにサーバーがロックされたボックス内にある)で使用されることがありますが、それ以外の場合はめったに使用されません。費用。



    1. 親IDとmysqlのwhere句ですべての子を取得します

    2. Extendsを使用してエンティティに関するクエリを台無しにするDoctrine

    3. MySQL DATE_FORMAT'%M'は短い月ですか?

    4. どのデータマスキング機能を使用する必要がありますか?