繁体   English   中英

当现代 web 浏览器在您不在安全上下文 (https) 中时禁用 SubtleCrypto 时,如何使用 SHA-256 实现摘要身份验证?

[英]How do you implement digest authentication with SHA-256 when modern web browsers disable SubtleCrypto when you're not in a secure context (https)?

我有一个非常基本的 web 服务器在 ESP8266 微控制器上运行,因此系统资源非常有限,但我认为它可能可以处理 SHA-256(我猜我们会看到,但这是一个单独的问题)。

我的准系统摘要身份验证实现运行良好,我可以通过 curl 访问该站点。

这个微控制器不打算暴露在互联网上,它只是你可以通过你的局域网在内部访问的东西,所以 SSL 不是一个选择(不确定如果它试图支持 HTTPS,微控制器会保持多好)。

所以,这是我的场景:用户尝试从他们最喜欢的 web 浏览器访问微控制器上的站点。 他们获得 401 代码并重定向到登录页面(连同 WWW-Authenticate 标头)。 此登录页面需要从 WWW-Authenticate header 中获取信息,以及用户输入的用户名和密码,生成 hash 需要发送授权 Z099FB995346F31C749F6E40DB0EZ。

不幸的是,如果您没有通过 HTTPS 连接(根据https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto ),生成 SHA-256 哈希的内置功能将被禁用 - 也是如此这意味着 web 浏览器本身不支持摘要身份验证(除非他们选择使用 MD5 而不是更安全的东西)? 如果您正在实施摘要身份验证,您需要提供自己的散列函数吗? 我也不太明白为什么禁用执行哈希的能力有助于用户安全(在非 https 上下文中)。

一个假设:

  • 在粗略的谷歌搜索之后,似乎摘要式身份验证仅对 http 有意义,就好像您使用的是 https 那么您已经获得了更好的加密保护您的凭据。

所以回答我自己的问题(部分):

事实证明,用户端完全由浏览器处理(即通用登录模式弹出窗口)。 Java 脚本甚至无法访问响应标头。

我想是为了防止实施不善的非安全登录?

我见过的示例通过完全通过 xhttprequests 提供功能来解决它。

我仍然不知道拒绝访问散列算法有什么好处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM