2016-12-05 54 views
1

在網頁(以https)通過websocket登錄 - 這是安全的嗎?

  1. 客戶端連接到用的WebSocket(安全WSS超過TSL)
  2. Server服務器發送「準備就緒的用戶和password'消息
  3. 用戶輸入信息和客戶端發送它
  4. Server驗證,並且只要WebSocket的連接,知道接收者是誰

編輯: 我正在考慮上面,而不是USI一個post方法。

回答

3

它可以是對一些攻擊安全的,但像往常一樣,有辦法打入網站,我們必須評估安全全盤

DB密碼

它不是從描述清楚,但合理的,您所描述的設置以純文本形式存儲用戶密碼。

這方面的最佳做法是計算密碼的哈希總和with salt並將其保存在數據庫中,因此如果攻擊者設法獲取數據庫轉儲,他們將需要大量時間來根據此密碼猜測密碼。

限速

您應該限制登錄嘗試失敗,因此攻擊者將不能夠容易地通過暴力破解挑一個密碼。

日誌

這可能會產生問題這裏記錄的另一件事情:你需要確保憑據沒有在應用程序日誌文件結束(我已經看到了與信用卡號碼)。

類似關心的是保持太久覈查結束後,這使他們更容易敏感信息(以如迫使Java的堆轉儲,並從該文件中選擇它們)

SSL祕密材料

如果你沒有足夠的注意力來減少對私人密鑰的訪問,那麼有人可能會發起一次中間人攻擊。

根據您的應用服務器支持的密碼套件,如果攻擊者竊取密鑰,先前記錄的通信可能容易被解密。抵抗的概念被稱爲forward secrecy。您可以驗證您是否正確調整了您的網絡應用here

您的證書頒發機構(或任何其他人)可以向您的網站頒發證書,允許攻擊者歪曲您(請參閱Mozilla and WoSign, Additional Domain Errors)。

CORS

你也應該設置Content-Security-Policy因此,這將是棘手的迫使瀏覽器代碼發送此AUTH以其它服務器的信息。

社會工程

攻擊者可以欺騙用戶進入啓動的網絡工具控制檯一些代碼 - 你可以嘗試例如打開Web控制檯在Facebook上,看看他們對此做了什麼。

新的東西,每天

漏洞得到發現,其中有些是發表在公告,你應該遵循那些你的籌碼(如OpenSSL)和補丁/升級在適當情況下。

+0

非常感謝您的出色反應 - 我很好奇發送關於websocket的passord與發送郵件的方法。 關於散列:如果攻擊者得到了數據庫轉儲的保留,他可以不手動打開websocket併發送散列? –

+0

歡迎。是的,如果攻擊者獲得了數據庫轉儲,他們將能夠在某些方案中登錄。還有其他設計來抵制這種情況(見[SCRAM](https://en.wikipedia.org/wiki/Salted_Challenge_Response_Authentication_Mechanism))。哈希數據庫還具有不允許擴展到其他站點的優點(用戶通常對他們使用的所有東西都有單一密碼)。 – Ivan

+0

至於websockets vs post,我不認爲當你通過TLS做這兩件事時,差別會很大。 – Ivan