HTTP POST的安全性如何?

时间:2009-06-17 18:05:31

标签: security post httpwebrequest xmlhttprequest

POST是否足够安全以发送登录凭据?

或者是必须的SSL连接?

14 个答案:

答案 0 :(得分:74)

SSL是必须的。 POST不比GET更安全,因为它也发送未加密。 SSL将覆盖整个HTTP通信并加密客户端和服务器之间的HTTP数据发送。

答案 1 :(得分:40)

<shameless plug>我有一个blog post,详细说明了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。

*请注意are other differences

答案 2 :(得分:8)

这取决于你的情况,截取证书需要花多少钱呢?

如果只是登录软件Q + A网站,则可能没有必要使用SSL,如果是在线银行网站,或者存储信用卡数据,那么它就是。
这是一项业务而非技术决策。

答案 3 :(得分:6)

HTTP POST未加密,可以被网络嗅探器拦截,也可以被代理拦截,或者泄露在具有自定义日志记录级别的服务器日志中。是的,POST比GET更好,因为POST数据不是由代理或服务器 usualy 记录的,但它不是 secure 。 要保护密码或其他机密数据,您必须在POST之前使用SSL或加密数据。另一种选择是在浏览器中使用摘要式身份验证(请参阅RFC 2617)。请记住,(本地增加的)加密不足以防止重放攻击,您必须在加密之前连接一个随机数和其他数据(例如,领域)(参见RFC 2617,了解如何在摘要验证中完成)。

答案 4 :(得分:5)

SSL必须:)

HTTP Post以纯文本格式传输。例如,下载并使用Fiddler来监视HTTP流量。您可以轻松地在那里(或通过像WireShark这样的网络流量监控器)查看整个帖子

答案 5 :(得分:4)

不安全。 POST可以像GET一样轻松嗅探。

答案 6 :(得分:2)

不...... POST根本不够安全。 SSL是必须的。

POST仅有效地隐藏查询字符串中的参数。任何查看浏览器和终点之间流量的人都可以选择这些参数。

答案 7 :(得分:2)

最安全的方法是根本不发送凭据。

如果您使用Digest Authentication,那么SSL必须 NOT

(注意:我并不是说通过HTTP进行摘要式身份验证总是比通过HTTPS使用POST更安全。)

答案 8 :(得分:1)

POST是纯文本。

必须建立安全连接。

这就是为什么它被称为安全连接。

答案 9 :(得分:1)

不,请使用SSL。

使用POST时,除非使用SSL,否则仍会以纯文本形式提交值。

答案 10 :(得分:1)

HTTP GET和HTTP POST之间的唯一区别是数据编码的方式。在这两种情况下,它都以纯文本形式发送。

为了为登录凭据提供任何类型的安全性,必须使用HTTPS。

您也不需要昂贵的证书来提供HTTPS。有许多提供商将以约20美元的价格发行非常基本的证书。更昂贵的包括身份验证,这对电子商务网站来说更为重要。

答案 11 :(得分:0)

单独的POST请求不安全,因为所有数据都以纯文本“旅行”。

您需要SSL才能确保安全。

答案 12 :(得分:0)

如果使用未加密的HTTP连接,POST数据将以纯文本格式发送。 如果这足够安全取决于您的使用(提示:它不是)。

如果服务器,客户端计算机和它们之间的所有机器都是受控的,完全受信任的网络的一部分,这可能没问题。

在这些非常有限的情况之外(有时甚至在其中),纯文本身份验证会遇到麻烦。

答案 13 :(得分:0)

请看这篇好文章:

防止恶意POST请求

https://perishablepress.com/protect-post-requests/