是否在此API中为http字符串安全传递用户名/密码?

时间:2012-11-06 01:05:57

标签: security https

阅读 http://getpocket.com/api/docs/

通过HTTP字符串传递密码是否安全?我的理解是这不安全,即使它是HTTPS。正确的吗?

2 个答案:

答案 0 :(得分:2)

API文档说明您正在通过HTTPS传递。实际上,HTTP Header中的GET或POST的所有信息都是SSL传输的一部分,因此URL参数也是加密的,因此您的GET参数是加密的。无法保证的是您的客户将保留的内容。或者,如果有其他进程暴露了某些信息,例如服务器对主机名进行DNS查找。另一个例子是,如果你有一个浏览器并且它保存了你输入的所有内容的历史记录,包括你的https网址,那么你可能会危及你的安全。

以下是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参数在标题中。在这两种情况下,所有敏感信息都是加密的。

答案 1 :(得分:1)

我原则上同意这听起来不安全。 URL可以以纯文本(甚至通过HTTPS)存在于各种有趣的地方,例如日志。最好避免在任何地方使用明文。

您应该与API作者讨论是否存在替代策略。例如,看起来这些方法中的一些同时支持POST和GET,在这种情况下,您可能会发布POST密码详细信息,这对于HTTPS连接来说是相对安全的。