【发布时间】: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