为了账号安全,请及时绑定邮箱和手机立即绑定

当域“A”包含来自域“B”的图像时,不会出现登录弹出窗口。图像位于受基本 http auth

当域“A”包含来自域“B”的图像时,不会出现登录弹出窗口。图像位于受基本 http auth

PHP
茅侃侃 2022-07-02 16:19:12
域“A”包括来自域“B”的图像<img src="https://DOMAIN_B/basic-auth/protected_image/secure.jpg">域“B”具有基本的 HTTP 身份验证。<?php    header("HTTP/1.1 401 Unauthorized");    header("WWW-Authenticate: Basic realm='Please login'");    exit;?>我的问题是为什么域“A”上没有出现登录弹出窗口。Chrome 给出错误“401 未授权”。但从技术上讲,浏览器应该会在域“A”上弹出登录显示。另一方面,本地和https://jsfiddle.net/w493nnp9/18/一切正常。您可以访问此链接,页面显示登录弹出窗口。但是为什么其他域不显示。 https://jsfiddle.net/w493nnp9/18/
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

如果它显示登录表单,那将是对站点 B 的潜在 CSRF 攻击。

让我们假设用户重复使用他们的密码,这不是一个强有力的假设,很多人都这样做。如果站点 A 包含来自基本身份验证站点 B 的图像,则用户会认为站点 A 正在请求他们的密码。如果它与站点 B 上的相同,他们将登录到站点 B 而没有任何意图。从那时起,由于基本的身份验证信息一直持续到浏览器关闭,站点 A 可以对站点 B 执行常规 CSRF(当然,除非有保护,应该有,因为用户也可能故意登录到 B )。

即使在站点 B 上有进一步的 CSRF 保护,如果在您的场景中显示登录弹出窗口,它也会使 http 基本身份验证天生容易受到登录 csrf 的攻击。


查看完整回答
反对 回复 2022-07-02
?
HUH函数

TA贡献1836条经验 获得超4个赞

登录弹出窗口不显示在<img>标签中,弹出窗口将显示在<iframe>示例中:<iframe src="https://httpbin.org/basic-auth/user/passwd">

为什么其他域不起作用?这是因为其他域具有“跨域”策略(查看响应标头)。

例如:您提供的链接“ https://httpbin.org/basic-auth/user/passwd ”,有Access-Control-Allow-Origin:*这里*表示这个域允许每个人获取数据。检查您的域“B”标头响应是否具有“Access-Control-Allow-Origin”。

基本上域“B”需要有 header =“Access-Control-Allow-Origin:*”,才能工作。


查看完整回答
反对 回复 2022-07-02
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信