【问题标题】:How does cUrl -u turn username and password into hash?cUrl -u 如何将用户名和密码变成哈希?
【发布时间】:2017-05-11 14:21:44
【问题描述】:

我试图弄清楚curl -u 与真实用户名和密码一起使用的安全性。调查此类请求的标头,似乎用户名和密码已转换为某种散列。

在下面的示例中,jujuba:lalalala 似乎正在转换为 anVqdWJhOmxhbGFsYWxh

这是加密还是压缩?安全吗?接收者如何解码这些数据?

 curl -u jujuba:lalalala -i -X Get  http://localhost:80/api/resource -v

* timeout on name lookup is not supported
*   Trying 127.0.0.1...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to localhost (127.0.0.1) port 80 (#0)
* Server auth using Basic with user 'jujuba'
> Get /api/resource HTTP/1.1
> Host: localhost
> Authorization: Basic anVqdWJhOmxhbGFsYWxh

【问题讨论】:

  • 基本身份验证仅对标头使用 Base64 编码。除非连接被加密(例如使用 HTTPS),否则它根本不安全。
  • 如果不安全,有什么理由这样做吗?它看起来并没有特别压缩。
  • RFC 2617, Section 2 涵盖了 HTTP 基本身份验证的规范;这就是客户端如何创建该哈希,以及服务器如何处理它。
  • 好的,所以 Base64 用于确保 user:pass 字符都是 ASCII 字符集的一部分,根据答案here
  • @Castaglia - RFC 2617 已过时。 “基本”的当前规范是greenbytes.de/tech/webdav/rfc7617.html

标签: http curl credentials


【解决方案1】:

如果你运行命令:

echo anVqdWJhOmxhbGFsYWxh | base64 -d

您将收到 jujuba:lalala 显示内容只是 Base-64 编码,这是基本身份验证的标准。

您应该对任何需要身份验证的站点使用 HTTPS。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2019-04-21
相关资源
最近更新 更多