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

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

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


当前回答

区别在于GET发送数据是开放的,而POST是隐藏的(在http-header中)。

所以get更适合于不安全的数据,比如谷歌中的查询字符串。Auth-data永远不会通过GET发送,所以在这里使用POST。当然,整个主题有点复杂。如果你想阅读更多,请阅读这篇文章(德语)。

其他回答

修改POST请求更加困难(它需要比编辑查询字符串更多的努力)。编辑:换句话说,它只是通过模糊来保证安全,而且几乎不是这样。

Post与安装SSL一起是最安全的,因为它在消息体中传输。

但所有这些方法都是不安全的,因为它下面使用的7位协议可以通过擒纵被破解。即使是通过四级网络应用防火墙。

套接字也不能保证…尽管它在某些方面更安全。

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

甚至POST也接受GET请求。假设您有一个表单,其中有user.name和user这样的输入。Passwd,这些应该支持用户名和密码。如果我们简单地添加?user.name="my user&user. name="Passwd =“我的密码”,则请求将通过“绕过登录页面”被接受。

对此的解决方案是在服务器端实现过滤器(java过滤器作为e),并检测到没有字符串查询作为GET参数传递。

安全的概念是没有意义的,除非你定义了你想要防范的是什么。

如果您希望对存储的浏览器历史记录、某些类型的日志记录以及查看您的url的人保持安全,那么POST更安全。

如果您希望安全防范某人嗅探您的网络活动,那么没有什么区别。