POST是否足够安全以发送登录凭据?
还是必须要有SSL连接?
POST是否足够安全以发送登录凭据?
还是必须要有SSL连接?
Answers:
SSL是必须的。
POST方法并不比GET安全,因为它也可以通过网络不加密地发送。
SSL将覆盖整个HTTP通信,并对客户端和服务器之间传输的HTTP数据进行加密。
<shameless plug>
我有一篇博客文章,详细介绍了HTTP请求的外观以及GET请求与POST请求的比较。为简便起见,GET:
GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
和POST:
POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123
(CRLF只是换行符)
如您所见,从如何形成请求*的角度来看,唯一的区别是POST请求使用POST单词,并且表单数据是在请求正文中发送的,而在URI中发送的。因此,使用HTTP POST通过模糊性是安全的。如果要保护数据,则应使用SSL。
*
请注意,在其他方面的差异。
这取决于您的情况,截取凭据需要花费多少钱?
如果只是登录软件Q + A站点,则可能不需要SSL;如果是在线银行站点,或者您存储信用卡数据,那么就不需要SSL。
这是一项业务,而不是技术决定。
SSL是必须的:)
HTTP Post以纯文本格式传输。例如,下载并使用Fiddler观看HTTP流量。您可以在那里轻松地(或通过WireShark等网络流量监控器)查看整个帖子
不... POST根本不够安全。SSL是必须的。
POST仅有效地隐藏查询字符串中的参数。那些查看浏览器和端点之间流量的人仍然可以选择这些参数。
最安全的方法是完全不发送凭据。
如果您使用Digest Authentication,那么SSL不是必须的。
(注意:我并不是在暗示基于HTTP的摘要身份验证总是比通过HTTPS进行POST更为安全)。
不,使用SSL。
对于POST,除非使用SSL,否则这些值仍将以纯文本格式提交。
如果您使用的是未加密的HTTP连接,则POST数据将以纯文本格式发送。是否足够安全取决于您的用法(提示:并非如此)。
如果服务器,客户端计算机和它们之间的所有计算机都是受控的,完全受信任的网络的一部分,则可以这样做。
在这些非常有限的情况下(有时甚至在其中),纯文本身份验证会带来麻烦。