我正在创建一个使用HTTPS的基于API的安全web;然而,如果我允许用户配置它(包括发送密码)使用查询字符串这也将是安全的,或者我应该强制它通过POST?


当前回答

是的,它是。但是对敏感数据使用GET是一个坏主意,原因如下:

主要是HTTP引用泄漏(目标页面中的外部图像可能泄漏密码[1]) 密码将存储在服务器日志中(这显然很糟糕) 浏览器中的历史缓存

因此,即使Querystring是安全的,也不建议通过Querystring传输敏感数据。

虽然我需要注意的是,RFC声明,浏览器不应该发送从HTTPS到HTTP的引用。但这并不意味着糟糕的第三方浏览器工具栏或HTTPS网站的外部图像/flash不会泄露它。

其他回答

您可以发送密码作为MD5哈希参数与一些盐添加。在服务器端比较它的身份验证。

是的。HTTPS会话的整个文本都由SSL保护。这包括查询和报头。在这方面,POST和GET完全相同。

至于你的方法的安全性,没有经过适当的检查,也很难说。

是的,只要没人越过你的肩膀看显示器。

SSL首先连接到主机,因此主机名和端口号以明文形式传输。当主机响应并且挑战成功时,客户端将使用实际的URL(即第三个斜杠之后的任何内容)加密HTTP请求,并将其发送给服务器。

有几种方法可以打破这种安全性。

可以将代理配置为“中间人”。基本上,浏览器将连接实服务器的请求发送到代理。如果代理以这种方式配置,它将通过SSL连接到实服务器,但浏览器仍将与代理通信。因此,如果攻击者能够访问代理,他就可以以明文形式看到流经代理的所有数据。

您的请求也将在浏览器历史记录中可见。用户可能会忍不住收藏该网站。有些用户安装了书签同步工具,因此密码可能会出现在deli.ci.us或其他地方。

最后,有人可能已经侵入了你的电脑,并安装了键盘记录器或屏幕刮板(许多特洛伊木马类型的病毒都这样做)。由于密码直接显示在屏幕上(而不是密码对话框中的“*”),这是另一个安全漏洞。

结论:当涉及到安全问题时,总是要依靠惯用的方法。有太多的事情是你不知道的,不会想到的,这会让你崩溃。

是的,从建立HTTPS连接的那一刻起,一切都是安全的。查询字符串(GET)作为POST通过SSL发送。