マスターパスワードをディスクに保存すると、暗号化は全く役に立たず、パフォーマンスが低下するだけです。
誰かがセッションの有効期間中にHDDを取り出した場合、彼は簡単にそのパスワードを使ってファイルを開くことができます。
あなたが大まかな管理を取得した場合、あなたはただ完了しました。ファイルを開く前にパスワードを保存するだけで済むからです。だから私はあなたの側に管理者がいると仮定し、あなたはシステムがうまく構成されている。
拳物はdisk encryptionです。実際にセキュリティが強化されます。もし誰かがあなたのHDDをセッションで平文のパスワードで盗んだとしても、とにかくそれを読むことはできません。
HTTPSを使用するよりも...これは、パスワードを使用して作業する場合に必須で、HTTPだけを使用している場合は、あなたのイニシアティブ全体が役に立たない必要があります。
php ...私はあなたが何かできるかどうかは分かりません。 HTTPSを使用しているときしかし、あなたがこれを行うことができます:
- ストアのパスワード
$pass
に
- は一時的なランダムな暗号化キーを生成
$rand
によって暗号化($rand
)
- ストアのパスワードは
- (私はXORを使用しました)
$rand
を$_COOKIE
に変更する
$_COOKIE
を使用すると、すべてのリクエストでマスターパスワードが復号されます。
例:
$pass = 'iddqd';
$rand = 'abcde';
echo base64_encode($pass^$rand); // CAYHFQE=
$_COOKIE['phrase'] = $rand;
$_SESSION['password'] = base64_encode($pass^$rand);
unset($pass);
// And on every other request:
$pass = $_COOKIE['phrase']^base64_decode($_SESSION['password'])
付加価値は何ですか?プレーンテキストでのパスワードの保存は、認証されたディスクアクセスのみに依存します。
一時的なフレーズを生成し、それをユーザーのブラウザに保存すると(ユーザー側のみ)、認証されたディスクアクセス+ユーザー認証で生成されたCookieの値に頼ります(スプーフィングが難しいはずです)。
また、httpsを使用している場合は、各リクエストでフレーズを送信することについて心配する必要はありません(10-100-1000リクエストごとに変更することがあります)。
なぜ実際のデータベースを使用していませんか? –
なぜデータベースにアクセスするにはマスターパスワードが必要ですか?単にデータベースを見つけて開くために使用できるユーザーIDではないのですか? – dqhendricks
@ダゴン私が持っている唯一のオプションはMySQLですが、暗号化の問題を解決できないと思います。 – chrisklaussner