阅读 http://getpocket.com/api/docs/
通过 HTTP 字符串传递密码是否安全?我的理解是,即使它是 HTTPS,这也不安全。正确的?
API 文档声明您正在通过 HTTPS 传递。实际上,HTTP 标头中的所有信息(无论是 GET 还是 POST)都是 SSL 传输的一部分,因此 URL 参数也被加密,因此您的 GET 参数也被加密。不能保证的是您的客户会保留什么。或者,如果有一些其他进程暴露了一些信息,例如您的服务器何时对主机名进行 DNS 查找。另一个例子是,如果你有一个浏览器,它会保留你在其中输入的所有内容的历史记录,包括你的 https url,那么你可能会危及你的安全性。
下面是 HTTP 标头,您的客户端将启动 TCP 连接并发送如下内容:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache
Cache-Control: no-cache
SSL 将规定所有信息与发回的任何信息都进行加密。我想说你使用这个 API 是安全的,GET 和 POST 方法之间的唯一区别是,在 POST 中,参数将在正文中,而在 GET 中,参数在标题中。在这两种情况下,所有敏感信息都被加密。
我原则上同意这听起来不安全。URL 可以以纯文本形式(甚至通过 HTTPS)出现在各种有趣的地方,比如日志。最好避免在任何地方使用纯文本。
您可能应该与 API 作者讨论是否有替代策略。例如,其中一些方法看起来同时支持 POST 和 GET,在这种情况下,您可能会 POST 密码详细信息,这是通过 HTTPS 连接执行的相对安全的操作。