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

Roa*_*oar 27 https post get

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

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

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

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

Ben*_*n S 53

GET数据作为查询字符串附加到URL:

https://example.com/index.html?user=admin&password=whoops
Run Code Online (Sandbox Code Playgroud)

由于数据会附加到URL,因此您可以传输的数据量存在硬性限制.不同的浏览器有不同的限制,但你会开始遇到1KB-2KB标记的问题.

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

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

来自Google讨论:

HTTPS连接上的URL查询中包含的数据已加密.但是,在'GET'请求中包含密码等敏感数据是非常糟糕的做法.虽然无法拦截,但数据将记录在接收HTTPS服务器上的纯文本服务器日志中,很可能也会记录在浏览器历史记录中.它可能也可用于浏览器插件,甚至可能用于客户端计算机上的其他应用程序.

如果要安全地传输信息,请始终使用HTTPS通过HTTPS.

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

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

  • 错误.GET请求也是加密的,包括查询字符串 - http://stackoverflow.com/questions/499591/are-https-urls-encrypted (13认同)
  • DNS请求仅包含域名,而不包括url参数.此外,即使POST请求也需要DNS查找.日志将包含url参数 - *但*日志只能由服务器访问,服务器也可以读取发布的任何数据.SSL旨在防止中间人攻击,无论GET还是POST,它都能实现这一目标. (8认同)