POST是否足够安全以发送登录凭据?
或者是必须的SSL连接?
SSL是必须的.POST不比GET更安全,因为它也发送未加密.SSL将覆盖整个HTTP通信并加密客户端和服务器之间的HTTP数据发送.
我有一篇博客文章详细说明了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,如果它是在线银行网站,或者您存储信用卡数据,那么它就是.
这是一项业务,而非技术决策.
HTTP POST未加密,它可以被网络嗅探器,代理拦截或泄漏到具有自定义日志记录级别的服务器日志中.是的,POST比GET更好,因为POST数据通常不会被代理或服务器记录,但它不安全.要保护密码或其他机密数据,您必须在POST之前使用SSL或加密数据.另一种选择是在浏览器中使用摘要式身份验证(请参阅RFC 2617).请记住,(本地增加的)加密不足以防止重放攻击,您必须在加密之前连接随机数和其他数据(例如,领域)(请参阅RFC 2617,了解如何在摘要验证中完成).
SSL是必须的:)
HTTP Post以纯文本形式传输.例如,下载并使用Fiddler来监视HTTP流量.您可以轻松地在那里看到整个帖子(或通过像WireShark这样的网络流量监控器)