2010-07-26 36 views

回答

4

HTTP Digest authentication可以不需要SSL的工作。

但它有和其他HTTP認證相同的問題。例如。有沒有註銷功能,你無法控制的登錄界面的外觀&感覺,登錄憑據,您的應用程序特定的用戶帳戶數據之間沒有集成等

我@Charles同意 - 只使用HTTPS在發送敏感數據時。


回覆您的評論:

在你的login.php腳本開始,檢查是否請求是HTTPS如果沒有的話重定向到正確的URL。

if (!isset($_SERVER["HTTPS"])) { 
    header("Location: https://mydomain.com/login.php"); 
} 

另外,您可以使用Apache重寫規則:

RewriteEngine On 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^/(login.php) https://%{SERVER_NAME}/$1 [L,R] 

另外,請記住,你不在乎,如果客戶端的頁面與普通HTTP登錄表單。如果客戶端提交表單不安全,您會在乎,因爲這是包含用戶密碼的請求。因此,如果login.php是處理登錄表單的腳本,則適用上述建議。

+0

好的,考慮我的登錄頁面地址是: https://mydomain.com/login.php 但是我可以限制將此頁面調用https並且如果用戶鍵入: http://mydomain.com/login。 php 無法訪問登錄頁面? – 2010-07-26 05:52:16

+0

摘要機制也可以手動實現。 – 2010-07-26 05:58:25

+0

非常感謝,它似乎完整。 – 2010-07-26 06:19:54

5

使用HTTPS。

...除了使用https之外的東西。

呃,嗯。

你爲什麼要避免SSL?這真的是做你想做的最簡單,直接的方法。

+0

因爲我不希望整個我的網站使用https,並且如果我只使用https和其他頁面使用http的1個頁面,那麼https頁面也將使用http訪問。我需要客戶端的md5數據。 – 2010-07-26 05:21:53

+0

他說**除了使用https以外。** – Sarfraz 2010-07-26 05:27:44

+1

@hd我不明白你的理由。爲什麼你不能只通過HTTPS訪問一個頁面? – 2010-07-26 05:38:33

1

您可以在發送到服務器之前使用一些salt值在客戶端加密(MD5/SHA等)您的密碼。然而,這當然不是最好的方法。這比發送純文本更好。選擇https。

+0

MD5和SHA不是加密的,它們是摘要。實際上這不是一個壞方法,但HTTPS至少是一樣的好。 – EJP 2010-07-26 05:51:15

+0

它是一種壞方法;沒有比發送它更安全的了。如果服務器期望哈希密碼,那麼有人嗅探流量將得到哈希,並可以發送它 - 完全相同,就好像密碼未發送一樣。 – 2010-07-26 11:13:49

+0

同意。這就是爲什麼我說'更好'。至少有一個我可以看到的優點是用戶可以確信密碼不會作爲明文存儲在服務器上。 – Gopi 2010-07-26 13:11:31