2012-09-06 40 views
1

我有一個登錄表單,將提交id和密碼到一個php文件,然後將檢查該數據和SQL數據庫中的數據。我如何加密外發表單數據,以確保沒有人能夠看到它,直到它到達目的地? 登錄表單代碼如何加密表單數據?

<html> 
<head> 
<title> 
Login page 
</title> 
</head> 
<body> 
<form name="login" action="fetchalldata.php" method="post"> 
Username : <input type="text" name="userid"/> 
Password : <input type="password" name="pswrd"/> 
<input type="button" name="submit" value="Login"/> 
</body> 
</html> 

將prehashing數據庫上的密碼和 發送哈希密碼更有效?

+3

[使用SSL](http://en.wikipedia.org/wiki/Secure_Sockets_Layer) – PeeHaa

+0

https是要走的路 – 2012-09-06 00:31:53

+0

嗯,我相信GoDaddy提供便宜的SSL證書。 – Tarik

回答

6

SSL is the answer。唯一的答案。

但是,如果你必須嘗試去同一個家庭BREW解決方案去這裏是一個想法來考慮:

  • 有PHP代碼提供的JavaScript與當前時間戳。
  • 您取出用戶輸入的密碼,追加時間戳,然後對其進行加密。
  • 將加密的密碼傳回帶時間戳的服務器。
  • 讓服務器確保返回的數據是最近的,讓它根據自己的數學檢查加密的密碼。
  • 如果時間戳太舊或已被用來登錄已經拒絕它。

這仍然是一個糟糕的主意,但它不像發送純文本密碼那樣糟糕。

使用SSL。真。

+6

我想你忘了提OP *真*應該使用SSL。 :) – PeeHaa

+3

@PeeHaa - 哦..對不起。我必須解決這個問題。感謝您的高舉。 –

+0

我可以看到一些代碼嗎? –

2

使用安全的SSL連接是唯一確保表單數據加密的真正方法。但是,在發送之前,您可以使用一些JavaScript來以某種方式對密碼進行編碼。它不會提供很高的安全性(因爲任何可以查看您的站點的人都可以看到JavaScript並對其進行反向工程),但它至少可以避免發送純文本密碼。

+1

更重要的是,如果您的站點的用戶正在MITMed,攻擊者可以輕鬆地禁用正在執行加密的任何腳本,或修改它以發送明文的副本。 ** HTTP上的Javascript加密基本上是不可靠的。** – duskwuff

+0

@duskwuff,他在這裏提到它「它不會提供太多的安全性(因爲任何人都可以查看您的網站可以看到JavaScript並對其進行反向工程),但它在最少避免在'附近發送純文本密碼。 –