当比较HTTP GET和HTTP POST时,从安全角度看有什么不同?其中一个选择是否天生就比另一个更安全?如果有,为什么?

我意识到POST没有公开URL上的信息,但其中有任何真正的价值吗?或者它只是通过隐匿性来实现安全?当安全性是一个问题时,我是否有理由更喜欢POST ?

编辑: 通过HTTPS, POST数据被编码,但url会被第三方嗅探吗?此外,我正在处理JSP;当使用JSP或类似的框架时,是否可以公平地说,最佳实践是避免将敏感数据完全放在POST或GET中,而是使用服务器端代码来处理敏感信息?


当前回答

GET对任何人都是可见的(甚至是你肩膀上的人),并且保存在缓存中,所以使用post不太安全,顺便说一句,没有一些加密程序的post是不确定的,为了一点安全性,你必须使用SSL (https)

其他回答

免责声明:以下几点仅适用于API调用,不适用于网站url。

网络安全:必须使用HTTPS。在这种情况下,GET和POST同样安全。

浏览器历史记录:对于前端应用程序,如Angular JS, React JS等,API调用是前端进行的AJAX调用。这些不会成为浏览器历史的一部分。因此,POST和GET是同样安全的。

服务器端日志:通过使用写入数据屏蔽和访问日志格式,可以隐藏所有或仅从request-URL中隐藏敏感数据。

浏览器控制台中的数据可见性:对于怀有恶意的人来说,查看POST数据和查看GET数据几乎是一样的。

因此,通过正确的日志记录实践,GET API与POST API一样安全。在所有地方都使用POST,会强制执行糟糕的API定义,应该避免。

安全如同数据传输中的安全:POST和GET之间没有区别。 安全性与计算机上的数据安全一样:POST更安全(没有URL历史)

没有额外的安全性。

Post数据不会显示在历史和/或日志文件中,但如果数据应该保持安全,则需要SSL。 否则,任何嗅探线路的人都可以读取数据。

即使POST与GET相比没有提供真正的安全优势,对于登录表单或任何其他具有相对敏感信息的表单,请确保您使用POST作为:

post的信息不会保存在用户的历史记录中。 表单中发送的敏感信息(密码等)以后将不会在URL栏中可见(通过使用GET,它将在历史记录和URL栏中可见)。

此外,GET有理论上的数据限制。不。

对于真正敏感的信息,请确保使用SSL (HTTPS)

正如之前一些人所说,HTTPS带来了安全性。

但是,POST比GET更安全,因为GET可以存储在历史记录中。

但更令人遗憾的是,有时POST或GET的选择并不取决于开发人员。例如,一个超链接总是通过GET发送(除非它使用javascript转换成post表单)。