私は現在小さなチャットアプリケーションを作成しています node.js
を使用して mongojs
、私はユーザーのmongoコレクションを持っています username, password and name
フィールドアプリケーションが使用する socket.io
データをリアルタイムで送信してからユーザーを認証し、認証が正しい場合はアプリケーションを使用させる。
しかし、パスワードを送信したくないプレーンテキスト、クライアント側でパスワードを暗号化する方法はありますか?またはこれを行うためのより良い方法はありますか?私はこれを別のページで使用することを考えていますが、私はこれをシングルページで行う必要があります。
これが私のクライアントサイドコードです。
function loginUser(){
console.log("Login User");
username = $("#login-username").val();
password = $("#login-password").val();
//VALIDATIONS
socket.emit("auth-user", {"username": username, "password": password});
return false;
}
回答:
回答№1は2クライアント側のパスワードの暗号化を強くお勧めします。
パスワードが送信される前にハッシュしている場合は、それからあなたは彼らのパスワードのハッシュをそのまま保存しなければならないでしょう(あるいはあなたは再びそれをハッシュすることができます、それは同様に無用です)。しかし、公開鍵/秘密鍵システムを設定してそれらをサーバー側で復号化し、それからそれらを別のハッシュアルゴリズムで再ハッシュしない限り、追加のメリットはまったくありません。
暗号化する主要なサイトはわかりません。これは、SSL / TCPプロトコルを使用して送信されることで、送信データのすべてを暗号化できるためです。
そのソケットに注意することが重要です。ioは、あなたが想定しているように安全ではありません。これは基本的なインターネットプロトコルに準拠しており、httpsを使用していない他のサイトのログインと同じくらい安全です。考慮すべきことだけ。
回答№2の場合は0
うーん...非常に良い質問です。私はこれまで認証でsocket.ioを使ったことがありません。
しかしそれはのようです パスポートパスポート socket.ioは、ソケットIOの認証に基づいて認証を処理するための望ましい方法です。 ウィキ。パスポートがデータを暗号化しているかどうかについては、何も見つけることができませんでしたが、少なくともPOST呼び出しを使用しています。
最後に