【问题标题】:How do I use special characters (password) on the URL when dealing with HTTP authentication?处理 HTTP 身份验证时如何在 URL 上使用特殊字符(密码)?
【发布时间】:2014-04-27 23:05:25
【问题描述】:

我有一个受基本 HTTP 身份验证保护的目录。

当我访问它的 URL 时,浏览器会要求我输入用户名和密码。

我的密码是Cw=y?qUPP+Xy,可以正常使用。

但是,我想直接使用 URL 上的用户名和密码访问它。

我试过了:

https://user:Cw=y?qUPP+Xy@example.com,但它没有工作,由于某种原因谷歌浏览器返回这个:

有解决办法吗?

【问题讨论】:

  • 为什么要在 URL 中输入用户名和密码?它会暴露给任何人和所有人。
  • 在 URL 中显示密码是不安全和危险的。请不要使用 GET 协议,而是使用 POST。
  • 即使我使用 https:// ?无论如何它都在本地网络上。
  • @viniciusmunich 即使是本地网络也是不安全的...想象一下我是管理员并且有人在我身后(他不是管理员),当我提交表单时,他们可以简单地去检查 URL 并知道我的密码。不是一个好主意,对吧?这就像使用 而不是
  • 上述cmets不一定正确;浏览器应该从 URL 解析用户名和密码,并代表您制作基本身份验证标头,这意味着当请求到达服务器时,URL 中不存在凭据。话虽如此,可以(远程或物理)访问您的设备的人可以查看您的 URL 历史记录并通过这种方式窃取凭据。

标签: .htaccess http basic-authentication


【解决方案1】:

您需要对其进行 URL 编码 例如,“@”会变成“%40”

但考虑到通过 HTTP 和/或通过 GET(查询字符串中的参数)发送用户和密码不是一个好主意...尝试在 HTTPS 下使用 POST 方法。

我将继续在此答案中添加我的评论,以提高知名度:

即使它是本地网络并且您使用的是 HTTPS,通过 GET 发送密码也是不安全的...想象一下我是管理员,并且有人在我身后(他不是管理员),当我提交他们的表单时可以简单地去检查 URL 并知道我的密码。不是个好主意,对吧?

这就像使用<input type="text"/> 而不是<input type="password"/> 作为密码。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2017-06-03
    • 2021-12-16
    • 2011-06-20
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多