我正在创建一个使用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发送。
推荐文章
- 自动HTTPS连接/重定向使用node.js/express
- Angular:如何在不改变路由的情况下更新queryParams
- SSL握手警告:unrecognized_name错误,因为升级到Java 1.7.0
- SSL证书错误:无法获得本地颁发者证书
- 向link_to添加查询字符串参数
- 使用JavaScript更改URL参数并指定默认值
- URL方案/主机/路径中的“+”是否代表空格?
- 使用请求包时出现SSL InsecurePlatform错误
- 可选查询字符串参数。NET Web API
- 如何删除查询字符串,只得到URL?
- 你从哪里包含jQuery库?谷歌JSAPI吗?CDN吗?
- 我可以把我所有的http://链接都改成//吗?
- 如何使用网络强制HTTPS。配置文件
- 摘要认证和基本认证的区别是什么?
- 浏览器会通过https缓存内容吗