我正在创建一个使用HTTPS的基于API的安全web;然而,如果我允许用户配置它(包括发送密码)使用查询字符串这也将是安全的,或者我应该强制它通过POST?
当前回答
我不同意关于……的说法。Slough响应中的HTTP引用泄漏(目标页面中的外部图像可能泄漏密码)。
HTTP 1.1 RFC明确声明:
客户不应包括推荐人 (非安全)HTTP中的报头字段 请求参考页是否为 通过安全协议传输。
无论如何,服务器日志和浏览器历史记录是不将敏感数据放入查询字符串的充分理由。
其他回答
是的,从建立HTTPS连接的那一刻起,一切都是安全的。查询字符串(GET)作为POST通过SSL发送。
您可以发送密码作为MD5哈希参数与一些盐添加。在服务器端比较它的身份验证。
我不同意关于……的说法。Slough响应中的HTTP引用泄漏(目标页面中的外部图像可能泄漏密码)。
HTTP 1.1 RFC明确声明:
客户不应包括推荐人 (非安全)HTTP中的报头字段 请求参考页是否为 通过安全协议传输。
无论如何,服务器日志和浏览器历史记录是不将敏感数据放入查询字符串的充分理由。
是的,只要没人越过你的肩膀看显示器。
是的,您的查询字符串将被加密。
原因是查询字符串是HTTP协议的一部分,HTTP协议是应用层协议,而安全(SSL/TLS)部分来自传输层。首先建立SSL连接,然后将查询参数(属于HTTP协议)发送到服务器。
在建立SSL连接时,您的客户端将按顺序执行以下步骤。假设您正在尝试登录一个名为example.com的站点,并希望使用查询参数发送凭据。您的完整URL可能如下所示:
https://example.com/login?username=alice&password=12345)
Your client (e.g., browser/mobile app) will first resolve your domain name example.com to an IP address (124.21.12.31) using a DNS request. When querying that information, only domain specific information is used, i.e., only example.com will be used. Now, your client will try to connect to the server with the IP address 124.21.12.31 and will attempt to connect to port 443 (SSL service port not the default HTTP port 80). Now, the server at example.com will send its certificates to your client. Your client will verify the certificates and start exchanging a shared secret key for your session. After successfully establishing a secure connection, only then will your query parameters be sent via the secure connection.
因此,您不会暴露敏感数据。但是,使用这种方法通过HTTPS会话发送凭据并不是最好的方法。你应该另辟蹊径。
推荐文章
- 将值附加到查询字符串
- 最好的方法在asp.net强制https为整个网站?
- 如何允许本地主机上的Apache使用HTTPS ?
- 如何让Chrome允许混合内容?
- 无法识别的SSL消息,明文连接?异常
- PHP获取网站URL协议- http vs https
- 如何转义哈希字符在URL
- 自动HTTPS连接/重定向使用node.js/express
- Angular:如何在不改变路由的情况下更新queryParams
- SSL握手警告:unrecognized_name错误,因为升级到Java 1.7.0
- SSL证书错误:无法获得本地颁发者证书
- 向link_to添加查询字符串参数
- 使用JavaScript更改URL参数并指定默认值
- URL方案/主机/路径中的“+”是否代表空格?
- 使用请求包时出现SSL InsecurePlatform错误