我正在创建一个使用HTTPS的基于API的安全web;然而,如果我允许用户配置它(包括发送密码)使用查询字符串这也将是安全的,或者我应该强制它通过POST?
当前回答
SSL首先连接到主机,因此主机名和端口号以明文形式传输。当主机响应并且挑战成功时,客户端将使用实际的URL(即第三个斜杠之后的任何内容)加密HTTP请求,并将其发送给服务器。
有几种方法可以打破这种安全性。
可以将代理配置为“中间人”。基本上,浏览器将连接实服务器的请求发送到代理。如果代理以这种方式配置,它将通过SSL连接到实服务器,但浏览器仍将与代理通信。因此,如果攻击者能够访问代理,他就可以以明文形式看到流经代理的所有数据。
您的请求也将在浏览器历史记录中可见。用户可能会忍不住收藏该网站。有些用户安装了书签同步工具,因此密码可能会出现在deli.ci.us或其他地方。
最后,有人可能已经侵入了你的电脑,并安装了键盘记录器或屏幕刮板(许多特洛伊木马类型的病毒都这样做)。由于密码直接显示在屏幕上(而不是密码对话框中的“*”),这是另一个安全漏洞。
结论:当涉及到安全问题时,总是要依靠惯用的方法。有太多的事情是你不知道的,不会想到的,这会让你崩溃。
其他回答
是的。HTTPS会话的整个文本都由SSL保护。这包括查询和报头。在这方面,POST和GET完全相同。
至于你的方法的安全性,没有经过适当的检查,也很难说。
我不同意关于……的说法。Slough响应中的HTTP引用泄漏(目标页面中的外部图像可能泄漏密码)。
HTTP 1.1 RFC明确声明:
客户不应包括推荐人 (非安全)HTTP中的报头字段 请求参考页是否为 通过安全协议传输。
无论如何,服务器日志和浏览器历史记录是不将敏感数据放入查询字符串的充分理由。
您可以发送密码作为MD5哈希参数与一些盐添加。在服务器端比较它的身份验证。
是的,从建立HTTPS连接的那一刻起,一切都是安全的。查询字符串(GET)作为POST通过SSL发送。
是的,只要没人越过你的肩膀看显示器。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 在Cygwin中对HTTPS URL运行wget时,如何修复证书错误?
- CFNetwork SSLHandshake iOS 9失败
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- c#忽略证书错误?
- 如何找出如果你使用HTTPS没有$_SERVER['HTTPS']
- 将值附加到查询字符串
- 最好的方法在asp.net强制https为整个网站?
- 如何允许本地主机上的Apache使用HTTPS ?
- 如何让Chrome允许混合内容?
- 无法识别的SSL消息,明文连接?异常
- PHP获取网站URL协议- http vs https
- 如何转义哈希字符在URL
- 自动HTTPS连接/重定向使用node.js/express