簡體   English   中英

Node.js,socket.io和mongojs-使用socket.io登錄表單

[英]Node.js, socket.io and mongojs - Login form with socket.io

我目前正在使用mongojsnode.js上創建一個小型聊天應用程序,我有一個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;
}

我強烈建議您不要對密碼進行客戶端加密。

如果在發送密碼之前進行哈希處理,則必須按原樣存儲其密碼的哈希(或者您可以再次對其進行哈希處理,這同樣沒有用)。 但是,除非您設置了一個公用/專用密鑰系統以在服務器端對其解密,然后使用單獨的哈希算法重新對其進行哈希處理,否則您將獲得絕對零附加收益。

我不知道任何可以加密客戶端的主要站點,因為公認的規范是使用HTTPS,因為它允許通過在SSL / TCP協議上發送來對所有傳出數據進行加密。

重要的是要注意,socket.io不是不安全的,就像您似乎正在假設的那樣。 它遵循基本的互聯網協議,並且與不使用https的其他任何站點的登錄名一樣安全。 只是要考慮的事情。

嗯...很好的問題。 我以前從未將socket.io與身份驗證一起使用。

但好像護照 ,護照socket.io ,是插座IO的首選處理基於他們的認證方式的wiki 我無法找到有關護照是否正在加密數據的任何信息,但至少是使用POST調用進行的。

在末尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM