2009-01-10 82 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身份验证,但无法执行基于表单的身份验证。