3

PHP安全な暗号化通信のためにプライベートメッセージシステムをコーディングしています。

ユーザーがアカウントを登録するたびに、を使用して新しいRSA秘密鍵を作成し、ユーザーのパスワードを使用してphpseclib暗号化しAESます。このパスワードは、データベースにハッシュ化およびソルト化されて安全に保存されます。

ユーザーが自分のパスワードでログインするたびに、秘密鍵のロックを解除し、その場で維持する必要があります。

このスクリプトは、SSL接続でのみ実行することを目的としています。

問題は、ユーザーのセッションで暗号化されていないバージョンの秘密鍵を維持して、ページが更新されるたびにパスワードを挿入しなくても、ユーザーがすべてのメッセージを読み取ったり、新しいメッセージを書き込んだりできるようにする必要があることです。

PHPセッションはサーバーに保存されたままであり、侵害される可能性があるため、PHPセッションへの保存は安全なソリューションではありません。

Cookieは簡単に盗まれる可能性があるため、Cookieに保存することは適切な解決策ではありません(ただし、このようにして、ユーザーの運命を自分の手に委ねます)。

PHP変数(Sessionではなく)でキーを維持し、ページを更新せずにajaxを使用してメッセージを取得および書き込みすることは、ajaxで可能ですか?またはより良い解決策はありますか?

前もって感謝します。

4

2 に答える 2

1

完全に制御でき、データベースへのアクセス/可視性を制限できると仮定すると、セッション データの保存をファイル ストレージからデータベースをセッション ストアとして使用するように切り替えることができます。もちろん、これはあなたのデータベースがあなたのニーズに対して十分に安全であることを前提としています。セッションをデータベースに保存するために php を設定する方法の詳細な概要については、http: //www.stanford.edu/dept/its/communications/webservices/wiki/index.php/How_to_use_MySQL-based_sessionsをご覧ください。

データベースの再起動後もセッション データを保持する必要がないと仮定すると、セッション ストア テーブルのストレージ エンジンをMEMORYInnodb または MyISAM の代わりにすることもできます。これにより、非常に機敏になり、セッション データが暗号化されていない状態でディスク上の db ファイル内にあるという懸念を回避できます。

于 2013-02-13T17:50:30.567 に答える