http - 为什么现代 Web 浏览器不再显示用于 HTTP 身份验证的 "realm"值?

标签 http authentication browser authorization

当使用 HTTP 身份验证托管网站时,如果客户端未通过身份验证,服务器将发送 401 未授权响应,包括 WWW-Authenticate header .此 header 中的可选指令是 realm:

A string describing a protected area. A realm allows a server to partition up the areas it protects (if supported by a scheme that allows such partitioning), and informs users about which paricular username/password are required.

(强调我的)

假设 www.example.com 需要授权并配置了 Test Area 的领域值。过去,大多数 Web 浏览器在收到此类响应时会显示一个登录对话框,并说出类似“需要授权。www.example.com 的站点显示'测试区域'。”

但是(至少是最新版本的)Chrome、Firefox 和 Edge 现在都只显示一条通用消息,不包括领域值。有趣的是,IE 仍然显示领域值(下面的屏幕截图,所有 Windows 10 64 位):

Chrome (v93.0.4577.82)

chrome no realm

火狐 (v92.0)

firefox no realm

边缘 (v93.0.961.52)

edge no realm

IE (v11.1411.18362.0)

IE has realm

我很确定 Firefox 和 Edge 曾经显示过它。 Chrome 可能有一段时间了,但似乎是第一个停止的。由于所有现代浏览器都没有显示它,我认为有一些原因......?我在整个互联网上搜索过,但无法弄清楚。我有一个用例,在该用例中,显示领域会对用户有所帮助,因为这样可以更清楚地说明他们需要使用哪些特定凭据。我知道您不能强制浏览器显示它,但这很烦人。但是,如果有正当理由不显示它,我会接受。

最佳答案

原因是,通过将一些误导性信息放入该领域,这可能会被滥用于网络钓鱼攻击。 http 身份验证的登录对话框是受信任的浏览器 UI 的一部分,让服务器有机会修改该 UI - 即使只是显示文本 - 也是一种安全风险。

关于http - 为什么现代 Web 浏览器不再显示用于 HTTP 身份验证的 "realm"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69303610/

相关文章:

python - 在不使用任何浏览器的情况下使用 Selenium

browser - 从我的网页通知用户他们的浏览器没有最新更新?

node.js - 使用 Socket.IO 的 emit() 而不是所有 HTTP 请求是一个好习惯吗?

javascript - 电子邮件正文中的多行文本

angularjs - 使用中间件通过 ExpressJS 调用身份验证 API

php - Laravel 5.2 - 授权 : display custom error messages

javascript - 用代码覆盖右箭头 firefox?

javascript - AJAX HTTP GET 请求必须触发两次才能工作

api - 在 REST API 中返回绝对 URI 与相对 URI

c# - ASP.NET Web 应用程序中的身份验证遇到问题