使用HTTP authentication with PHP(HTTP 401标头)有什么好处 而不是使用普通表单提交身份验证??
答案 0 :(得分:12)
从安全角度来看,基于表单的和 HTTP Basic Access Authentication 都使用纯文本来发送身份验证数据。 (当然,HTTP Basic Auth另外使用Base64,但这没什么问题。)
虽然HTTP Basic Auth会在每个请求上发送身份验证数据,但基于表单的身份验证仅在发送表单时发送身份验证数据(请记住:都是纯文本格式)。通常会话用于在使用基于表单的身份验证时维护状态。
因此,如果您想使用其中一种,请务必使用HTTPS加密您的连接,以防止嗅探和man-in-the-middle attacks。当您选择基于表单和会话的变体时,请务必保护会话处理,以防止或至少检测Session Hijacking和Session Fixation等会话欺诈。
最后一个变体是 HTTP Digest Access Authentication 。这与Basic之间的主要区别在于,Digest是challenge-response authentication,而客户端必须在每个请求上完成挑战,而响应只是MD5哈希。因此,不会发送纯文本身份验证数据。
答案 1 :(得分:8)
你的问题有点模糊,但一般的答案是使用这种方法为你提供了一个更加“RESTful”的实现,它遵循HTTP已经擅长的功能。在这种情况下,抛出401是其他Web服务器,Web代理和Web浏览器知道如何处理的东西。如果你只是吐出一个HTML表单,它只能由最终用户操作,而使用HTTP状态代码允许机器交互。
我建议您查看http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
以了解HTTP的真正含义。我认为这应该使所有这些更有意义。
答案 2 :(得分:0)
作为revolutiontrigger所说的一个例子,我经常在使用基于表单的身份验证的网站的RSS源上使用HTTP身份验证,因为许多RSS阅读器可以执行HTTP身份验证,但不能执行基于表单的身份验证。< / p>
答案 3 :(得分:-1)
你制作网站?如果是,则使用&lt; form&gt;标签..它更漂亮;)
您是否允许其他应用访问应用并发送某种形式的数据?然后使用HTTP身份验证。
据我所知,安全术语,速度或其他方面没有太大区别......这只是丑陋而且更容易实现。