2009-01-10 70 views
10

使用HTTP authentication with PHP(HTTP 401標頭)的好處是什麼
而不是使用正常形式提交身份驗證?「HTTP身份驗證與PHP」的好處

+0

使用基於會話的(和基於表單的)身份驗證,這首先更加方便。你可能想看看https://github.com/delight-im/PHP-Auth,它既是框架不可知的,也是數據庫不可知的。 – caw 2016-09-22 03:36:05

回答

12

從安全的角度看,既用於發送所述認證數據的基於形式HTTP Basic Access Authentication使用純文本。 (當然,HTTP Basic Auth另外使用Base64,但這並不困難。)

雖然HTTP基本身份驗證在每個請求上發送身份驗證數據,但基於表單的身份驗證僅在發送表單時發送身份驗證數據(請記住:以純文本)。通常會話用於在使用基於表單的身份驗證時維護狀態。

所以,如果你想使用其中之一,一定要加密你的連接使用HTTPS,以防止嗅探和man-in-the-middle attacks。並且,當您選擇基於表單和會話的變體時,請確保您的會話處理安全,以防止或至少檢測會話欺詐,如Session HijackingSession Fixation

最後一個變體是HTTP Digest Access Authentication。這和基本的主要區別在於,摘要是challenge-response authentication,而客戶端必須對每個請求執行挑戰,並且響應只是一個MD5哈希。所以沒有純文本驗證數據正在發送。

8

你的問題有點含糊,但一般的答案是,使用這種方法給你一個更「RESTful」的實現,遵循HTTP已經很擅長。在這種情況下,拋出401是其他Web服務器,Web代理和Web瀏覽器知道如何處理的事情。如果你只是吐出一個HTML表單,它只能由最終用戶操作,而使用HTTP狀態代碼則允許機器交互。

我建議查看http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol以瞭解HTTP的真正含義。我認爲這應該讓所有這些都變得更有意義。

-1

您製作網站?如果是的話,然後使用<表格>標籤..它更漂亮;)

您讓應用程序被其他應用程序訪問和派遣某種形式的數據?然後使用HTTP認證。

據我所知,在安全性,速度或其他方面沒有太大的區別..它只是醜陋而且容易實現。

0

作爲革命性觸發者說的一個例子,我經常在RSS源上爲使用基於表單的身份驗證的站點使用HTTP身份驗證,這很簡單,因爲許多RSS閱讀器可以執行HTTP身份驗證,但無法執行基於表單的身份驗證。