【问题标题】:How can I automatically answer a password prompt from an embedded item in an (X)HTML page?如何自动回答 (X)HTML 页面中嵌入项目的密码提示?
【发布时间】:2010-11-21 00:41:45
【问题描述】:

我编写了一个网页,通过带有适当 href 值的简单 img 标签显示来自我网络上多个服务器的图像。服务器在发送图像之前需要进行身份验证。

它工作正常,除了在第一次加载时,页面会向用户显示一系列密码提示(每个服务器一个)。用户可以选择“记住我的密码”复选框,然后在没有提示的情况下进行页面的后续刷新,并使用正确更新的图像。也就是说,直到有人关闭浏览器,之后会出现一组新的提示等待再次打开该页面的任何人。

所有所需的凭据都是事先知道的,我不在乎是否有人可以在页面源中阅读它们,因为此页面位于内部 Intranet 站点的受保护部分中。无论如何,有权访问此页面的每个人都知道密码。

我们唯一允许使用的浏览器是 IE 7,所以我暂时不关心与其他浏览器的兼容性。

有什么方法可以使用 JavaScript(或其他一些客户端代码)自动回答这些提示,让用户永远看不到它们?

非常感谢,提前。

【问题讨论】:

  • 服务这些页面的是什么服务器软件?可以在服务器端验证用户,但不能在客户端 AFAIK。
  • 这有点丑陋。这是一个存储在 SharePoint 网站中的 HTML 页面,然后从 SharePoint 文档库中打开。我想这意味着它由 IIS 提供服务,但我无权更改服务器软件选项,这就是我询问客户端代码的原因。至于页面从中提取图像的其他服务器,它们是具有内置网络服务器的第 3 方设备。不确定是什么平台,但我也无法更改其配置。

标签: javascript html internet-explorer passwords prompt


【解决方案1】:

不,javascript 无法做到这一点。以下是我以前用来解决此问题的几个选项:

  1. 将其他服务器上的身份验证更改为匿名或集成。
  2. 图像中的代理:在为页面提供服务的服务器上,添加另一个接收远程服务器 URL 的页面。这个新页面向其他服务器发出网络请求并将图像流回。网络请求可以插入正确的凭据。
  3. 根据服务器的 DNS 名称,可能会在所有服务器之间共享一个身份验证 cookie。然后,您可以在所有服务器上设置某种模块以允许共享身份验证。

【讨论】:

  • 感谢您的建议。可悲的是,在这种情况下,我真正可以控制的只有我自己的页面。我无法更改任何服务器的行为,这就是我依赖客户端代码的原因。不过,感谢 WebRequest 的想法。我会玩这个,看看我能想出什么。
【解决方案2】:

您可以在 URL 中包含身份验证:

<img src="http://paulfisher:tastybacon@internalwebs/path/to/image.png">

当然,paulfisher 是我的用户名,我的密码是 tastybacon

【讨论】:

  • 几年前停止工作了。它被认为是一个安全漏洞。
猜你喜欢
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2012-12-13
  • 2012-05-15
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多