什么是GET和POST加密之间的区别?

时间:2010-06-17 16:21:08

标签: post https get

加密GET和POST数据有什么区别?谢谢答案

编辑:我需要更具体地编写它。

当https-SSL加密这两种方法时,浏览器执行此操作的方式有何不同。 哪些部分是加密的,哪些不是? 我在某处读到,目标网址在POST中未加密,是真的吗? 如果它在GET中是真的并且相同,那么所有参数都在哪里?

Edit2:我的问题仍然不知道答案。当两种方法都使用相同的数据加密时,嗅探时看起来是否相同?哪些部分是加密的,哪些不是?

5 个答案:

答案 0 :(得分:51)

GET 数据作为查询字符串附加到网址

https://example.com/index.html?user=admin&password=whoops

由于数据已附加到网址,因此您可以传输的数据硬限制。不同的浏览器有不同的限制,但你会开始遇到1KB-2KB标记的问题。

POST 数据包含在HTTP请求的正文中,并且在网址中不可见。因此,您可以通过POST传输的数据量没有限制。

如果HTTP连接使用SSL / TLS,则 GET参数也会加密,但可以显示在其他位置,例如Web服务器日志,浏览器插件和其他应用程序可能会访问同样。 POST数据已加密,并且不会以任何其他方式泄露。

来自Google Discussion

  

URL查询中包含的数据   HTTPS连接已加密。   然而,这是非常糟糕的做法   包括如此敏感的数据   'GET'请求中的密码。而   它无法拦截数据   将以明文登录   接收HTTPS上的serverlogs   服务器,很可能也在   浏览器历史。它可能也是   可用于浏览器插件和   甚至可能是其他应用程序   客户端计算机。

如果您想安全传输信息,请始终使用POST over HTTPS

如果您使用加密库来加密数据,那么您可以使用GET或POST,但这会增加额外的痛苦,您可能无法正确设置加密,所以我仍然建议使用POST通过HTTPS,而不是滚动自己的加密设置。这个问题已经解决了,不要重新发明轮子。

您可能需要考虑的其他选项是使用安全Cookie 。设置了安全标志的cookie仅通过安全通道(如HTTPS)发送,并且不可嗅探。这是一种安全地保留信息的好方法,例如会话ID。

答案 1 :(得分:3)

不同之处在于,使用GET动词发送的加密参数将在地址栏中显示,而使用POST动词发送的参数不会(当然这并不意味着用户无法看到加密值) 。另一个区别在于允许的最大长度:GET请求受限,因为在浏览器中URL受限。第三个区别:GET请求记录在它们传输的中间Web服务器(Web,代理,...)中,因此如果您通过Internet使用GET,您的加密参数肯定会在到达您的Web服务器之前记录在许多计算机上。

答案 2 :(得分:3)

发出HTTPS GET请求时,查询字符串参数是加密的!在HTTPS请求中唯一未加密的是服务器名称或请求的IP地址和端口。这些是将请求从浏览器路由到Web服务器所需的唯一两条信息,然后执行解密。

使用Fiddler(关闭SSL解密)并使用安全网站查看您的流量。您将看到无法查看未加密的查询字符串数据甚至路径信息。

答案 3 :(得分:0)

POST可以发送比GET更多的数据

恶意用户更容易操纵数据

GET未加密

POST未加密

答案 4 :(得分:0)

如果您可视化HTTP请求可能会有所帮助:

GET /page.php?get-data-here HTTP/1.1
Host: www.site.com

post-data-here

使用HTTPS时,整个事情都会被加密。