私はいつも、パスワードをプレーンテキストとしてデータベースに保存することは(他の誰かが言っているように)VeryBadThing™であるという印象を持っていました。
これまで、サーバーサイドコーディングのニーズのほとんどは、プログラマーのグループに委託されてきました。パスワードはMySQLデータベースにプレーンテキストで保存されます。
レジデントコードモンキー(ちなみに、ここで働く最初のサーバーサイドに精通したモンキーなので、いわば地球を継承しています)として、私はこの胃の穴が私のお尻だと感じていますこのプレーンテキストのナンセンスが悪用されたとき。
平文のパスワードが非常に悪いことを上司に説明しようとしましたが、それは私に夜明けを告げました。なぜそんなに悪いのか、私は今まで本当に知らなかったと思います。ハッカーに銀の大皿にパスワードのリストを渡す以上のことはありますか?それは私には十分に悪いように聞こえますが、私たちのWebサイトが「安全」で、ハッカーの影響を受けないララランドでは、この議論はそれをカットしていないようです。上司に自分の大切なウェブサイトでハッシュを要求するように説得(または怖がらせる)するにはどうすればよいですか?
軍隊では、「多層防御」と呼ばれています。理論は、1つの層だけを硬化してそれで十分であることを期待するのではなく、可能なすべての層を硬化させるというものです。
あなたのようなデータベースは「外側は硬く、内側は柔らかくて歯ごたえがある」と聞いたことがあります。熱心なハッカーがデータベースにアクセスする方法は無数にあります。ソーシャルエンジニアリング、不満を持った従業員、ログインがまだ機能するかどうかを確認することを決定した元従業員、または彼が書いたバックドアがまだそこにある、1つのOSパッチを逃した...リストは続きます。
悪意のある攻撃者がこれらの方法のいずれかを介してアクセスすると、データを取得するだけでなく、システムのすべてのユーザーのすべてのユーザー名とパスワードの組み合わせにアクセスできます。誰かが指摘したように、人々はすべてのWebサイトで同じ組み合わせを使用することがよくあります。 。つまり、ハッカーは外に出て、何百人もの人々のPaypal、電子メール、および銀行口座を所有しています。
私はもう恐ろしいほど恐ろしい絵を描きましたか?
多くの企業では、セキュリティの問題は外部ではなく内部から発生することを考慮するように彼に伝えます。
次に、何らかの理由で誰かを解雇しなければならないときに、ハッカーがパスワードを盗んだ方法(間違いなく他の場所で使用したもの)を顧客に説明する方法を彼に尋ねます。
また、データベースへの読み取りアクセス権を持つすべての人にパスワードが表示されることを顧客が知りたいと思う程度を彼に尋ねます。
ここにいくつかの理由があります:
アカウントを適切に保護できないと、情報が漏洩した場合に会社が法的責任を問われる可能性があることを指摘しておくとよいでしょう。既知の脆弱性を無視すると、会社の行動の結果としてユーザーのデータが公開された場合(場合によっては行動を起こさなかった場合)、法定費用が発生する可能性があります。
米国では、財務情報や医療情報など、企業が安全かつ非公開に保つことが法的に義務付けられている特定の種類のデータがあります。そうしないと、深刻な結果を招く可能性があります。私はこの点に関して他の国の法律に精通していませんが、あなたの会社がそのようなデータを扱っているかどうかを調べる価値があります。
セキュリティ上のリスクに加えて、あなたの会社のすべての従業員がパスワードにアクセスできることをクライアントが知った場合、クライアントは何と言うでしょうか。リークの可能性がある場合、次の場合にパスワードが危険にさらされます。
機密情報をプレーンテキストで保存している企業のことを時々耳にするでしょうが、それは決してうまく終わらないのです。私たちは皆人間であり、間違いを犯しがちです。セキュリティに関しては完璧だとは言えません。大規模で収益性の高い会社は、起こりうる悪いことが起こるので、回避できるリスクの余地を残すことはできません...
「クラッカーに銀の大皿にパスワードのリストを渡す」が十分な理由ではない場合、何が十分な理由を構成しますか?
プレーンテキストのパスワードが盗まれたデータベースのケースが多すぎます。 redditに発生する可能性があります の場合、発生する可能性があります。
組織がPCI-DSSコンプライアンスを維持している場合(クレジットカードを受け入れる加盟店など)、プレーンテキストのパスワードは許可されません。 PCI DSS項目8.4を参照してください。
組織がFDICの保険に加入している金融機関である場合、プレーンテキストのパスワードは許可されません(FDIC FIL 692001を参照)。
ISO/IEC 27001認定を取得したい場合は、転送中と保存中の両方でパスワードを暗号化する必要があります。特定の政府機関と協力している場合。
この質問に対して私が公布した2つの良い答えは次のとおりです。
パスワードを詮索する従業員から保護します。つまり、データベースに正当にアクセスできる人は、気が向いたとしてもパスワードを簡単に盗むことはできません。
WebサイトのフロントエンドでのSQLインジェクションなどのアプリケーションロジックの欠陥により、侵害が発生する可能性が低くなります。
私の意見では、データベースのパスワードを暗号化することは良い考えです(ただし、ほとんどのアプリで暗号化することはまだできていません)が、はるかに重要なのは、データベースサーバーがネットワークと許可されたアクセス。攻撃者がデータベースにアクセスできれば、パスワードをどのように保存したかは関係ありません。攻撃者はパスワードを破ることができます。