ウェブサイトを構築しており、支払い方法は Google Checkout と Paypal になります。支払いを処理するための安全な Google/Paypal サイトにユーザーをリダイレクトするリンク/ボタンがあります。これは、サイトに SSL 証明書をインストールするための年間 150 ドルの追加費用と複雑さが必要ないことを意味します。
ただし、ユーザーがログインしているときにユーザーのパスワードを暗号化したいので、ネットワーク上にいる場合、FireSheep などを実行している悪意のある人物がサーバーに送信されているユーザーの実際のパスワードを読み取ることができません。サイトの残りの部分は、機密データではなく、おそらくユーザー エクスペリエンスが大幅に低下するため、暗号化は必要ありません。
私の考えでは、これは公開鍵暗号で実装できると思います。プロセスが次のようになるとしましょう。
- 公開鍵は JavaScript 外部ファイルにあり、秘密鍵はサーバー上の PHP にあります
- ユーザーはフォームにユーザー名とパスワードを入力し、送信をクリックします
- JavaScript が実行されてパスワードが暗号化され、テキスト フィールドに保存されます。
- フォームがサーバーに送信され、パスワードが PHP で復号化されます
- PHP のプレーン テキスト パスワードはソルト化およびハッシュ化され、データベース内のハッシュと比較されます。
- 登録/パスワード変更機能についても同様のプロセスが考えられます。
RSAのようなものがうまくいくと思います。しかし、それを行うために動作する JavaScript ライブラリをネットで探しましたが、利用可能な PHP ライブラリと互換性があるものはないようです。いずれにしても、JavaScript および PHP と互換性のある一連のキーを生成する必要があります。
これに対する実際の実用的な解決策を知っている人はいますか? そうでない場合は、作成してからオープンソースにしましょう。残念ながら、暗号化/復号化コードの記述は非常に複雑であるため、既存のライブラリが何を行っているのか、それらを変更して機能させる方法を正確には知りません。私はすでにセッション固定/ハイジャックに対する保護を持っているので、それには興味がありません。Webサーバーに到達する前にデータを暗号化することに興味があります.
注: スタンドアローンの Javascript または PHP 暗号化ライブラリへのリンクを大量に投稿しないでください。既に Google でそれらを見つけました。それは実際には役に立ちません。私が必要としているのは、JavaScript 暗号化と PHP 復号化のコードであり、実際に調和して連携して、上記で概説した意図した結果を生成します。
また、「SSL を使用するだけ」などのコメントの投稿を控えていただければ幸いです。ベストプラクティスでなくても、この正確な問題の解決策が実際に欲しいのですが、それでも興味深いでしょう。
どうもありがとう!