2012-03-31 45 views
2

我認爲Javascript是一個安全隱患,因此我希望允許我的網站用戶在無需啓用Javascript的情況下登錄。安全的用戶認證,不需要javascript

這給我帶來了另一個問題。如果沒有客戶端腳本,我不知道如何在客戶端散列用戶密碼,以避免明文密碼傳輸。 「純HTML + CSS」如何讓我有密碼散列。

目前在我看來,唯一安全的選擇(沒有Javascript)將是一個安全的(加密的)SSL/HTTPS連接併發送密碼爲純文本?

無論如何:有沒有某種方法來散列用戶密碼,以避免以明文形式通過互聯網發送。這可能只使用客戶端腳本?

[更新] 我知道SSL也許是最接近理想的方式。 (正如評論中提到的那樣)總之。在任何時候,明文用戶名和明文密碼都不會通過不安全的通道發送時,這已經是一項安全改進。哈希也可以被嗅探,並且不存在安全(即加密)。但是,嗅探器無法獲得用戶名和密碼的不相關版本。 =>優勢在於用戶不會公開他們的用戶名/密碼組合(可能在別處使用)。

畢竟它似乎沒有「禁用腳本」 - 對(spice)散列某些輸入字段值的途徑。所以我認爲我的問題是無法解決的。

+4

「SSL」響鈴嗎? SSL是爲此目的而製作的。即使使用JS,HTML + CSS也沒有真正的「安全性」。 – Joseph 2012-03-31 07:25:17

+0

我會在JavaScript中實現加密,如果用戶禁用JavaScript,我會通知他有關不安全的傳輸(使用HTML的noscript-tag:'')。 但仍然是最好的,我想最常見的解決方案是通過安全連接(HTTPS)傳輸。 – 2012-03-31 07:25:57

+1

...或者使用HTTPS和客戶端證書 – 2012-03-31 07:29:11

回答

2

首先,如果您使用SSL,那麼密碼不會以純文本形式發送。除了初始握手以外的所有內容都被加密,並且相當安全。考慮到這是全世界銀行,軍隊和政府每天都要依靠的安全。我並不是說你應該相信它,只是因爲其他人都這麼做(argument from authority) - 我只是說如果有問題,我們馬上就會聽到。

其次,你從來沒有真正通過客戶端散列獲得任何東西。您試圖阻止的基本攻擊是man-in-the-middle (MITM)攻擊。無論是有人竊聽連接,嗅探重播攻擊的密碼,還是主動劫持會話(即假裝成服務器和客戶端連接到連接的另一端),您都無法通過額外的安全措施真正阻止它。

如果假設攻擊者可以通過你的SSL加密,然後依靠一些客戶端軟件正在做或服務器一起發送可能會受到影響的東西任何其他標記突破。如果它有一些客戶端散列函數,那麼攻擊者可以通過檢查服務器發送的網頁來了解函數是什麼,或者只是嗅探哈希值,並在攻擊者與服務器通信時使用它來模擬客戶端。如果服務器發送一些安全密鑰或令牌供客戶端使用並作出響應,則攻擊者可以截獲該密鑰或令牌。

我認爲你要找的是two-factor authentication