2012-10-25 117 views
1

對不起,如果這個問題被問到,但我還沒有找到確切的問題。我有HTML格式的文本正在提交。我知道有SSL的SSL,但我不想購買證書。是否有可能以某種方式加密表單數據?我正在考慮兩件事:保護HTTP流量免受嗅探

  • 通過javascript散列表格數據 - 事實上,我只想發送密碼,所以我不需要知道它的起源價值。
  • RSA - 不確定它是否可以在JavaScript中實現。 你會建議什麼?任何其他變體?
+2

「但我不想購買證書」,如果我知道服務所有者會像您一樣推理 - 我絕不會使用與該人相關的任何服務。 – Anders

+1

要免費完成此操作,請使用自簽名證書。也許有人可以寫一個答案來解釋如何。 –

回答

3

無論您執行哪種瀏覽器端加密,都需要使用加密密鑰 - 攻擊者才能使用這種加密密鑰。因此,儘管您的密碼將被加密給臨時觀察者,但針對有針對性的攻擊沒有額外的安全措施。

散列在這種情況下是無用的,因爲散列版本的密碼成爲用於授權/註冊用戶的密碼。

此問題的唯一解決方案是SSL證書 - 它們非常便宜!

http://en.gandi.net/ssl/grid(無友情鏈接)

你甚至可以使用一個self-signed certificate(如果你可以教育你的用戶相信會出現瀏覽器警告)。由於自簽名證書沒有「證書頒發機構」來證明證書是合法採購的(而不是由遠程主機在man-in-the-middle attack中提供),因此瀏覽器(和用戶)在解僱證書時非常喧賓奪主他們是「不安全的」。

有一個在Matasano Security在JavaScript安全的好文章:

安全交付的Javascript到瀏覽器是一個雞生蛋蛋的問題。

瀏覽器Javascript對密碼學是敵對的。

Javascript的「view-source」透明度是虛幻的。

直到這些問題得到解決,Javascript並不是一個嚴肅的加密研究環境,並且因此而受到影響。

+0

RSA呢?或者不可能在JavaScript中實現? – seeker

+0

@懇求這不是不可能的,但它是致命的缺陷。查看更新 – Andy

2
  • 散列是一個單向的過程..你不能找到一個散列原始值 。
  • 有一個blowfish encryption library for javascript,但我真的沒有看到它的目的,因爲(就像Andy在他的回答中所述),用於加密的密鑰將以明文形式提供給客戶端。

標準(和btw唯一)的方式是https。你可以使用自己的證書啓用SSL,不需要購買SSL證書。但是,瀏覽器可能會警告訪問者證書尚未由已知授權機構簽署。