Rest HTTP Get和HTTP-POST之间有什么区别?为什么HTTP-POST在安全性方面较弱

Rest HTTP Get和HTTP-POST之间有什么区别?为什么HTTP-POST在安全性方面较弱,rest,Rest,有人能解释HTTP-GET和HTTP-POST之间的区别吗?为什么人们说HTTP-POST在安全性方面较弱?在HTTP GET请求中,在URL中指定键/值对: 在HTTP POST请求中,密钥/值对作为HTTP请求的一部分在头之后发送。例如: POST /something HTTP/1.1 Host: server Content-Length: 21 Content-Type: application/x-www-form-urlencoded value1=foo&value2

有人能解释HTTP-GET和HTTP-POST之间的区别吗?为什么人们说HTTP-POST在安全性方面较弱?

在HTTP GET请求中,在URL中指定键/值对:

在HTTP POST请求中,密钥/值对作为HTTP请求的一部分在头之后发送。例如:

POST /something HTTP/1.1 Host: server Content-Length: 21 Content-Type: application/x-www-form-urlencoded value1=foo&value2=bar POST/something HTTP/1.1 主机:服务器 内容长度:21 内容类型:application/x-www-form-urlencoded 值1=foo和值2=bar 很难将其中一个描述为比另一个更安全或更不安全,但HTTP POST数据在URL中不可见,并且在向网站提交数据时,HTTP POST通常只能在用户交互的结果下执行(例如单击“提交”按钮)

这意味着用户不能被欺骗访问像
这样的URL,并且敏感数据不会暴露在URL中

您还可以在html表单(使用POST)中使用和其他防伪令牌来防止其他形式的跨站点请求伪造


一般来说,POST应该用于可能修改服务器上状态的请求,GET应该用于只读操作。

我不认为POST比GET更安全。诚然,在使用GET时,参数显示为URL的一部分,因此用户可以立即看到任何敏感数据。然而,查看甚至更改HTTP请求的任何部分都很简单,因此,仅仅因为POST没有通过URL传递数据,它仍然可以轻松读取。除非您使用HTTPS,否则GET和POST都将以易于访问的形式传输数据

仅适用于数据检索和。但其目的是为了特定的目的:改变服务器端的数据

只需在页面上放置一个图像即可轻松预测GET请求(请参阅),而伪造POST请求则不那么容易(这也是您只允许授权POST请求的原因)。

POST和GET的区别在于它们的意图:

GET是幂等的:它用于获取资源,而不更改服务器上的任何内容。因此,重新提交GET请求应该是完全安全的

POST不是:它用于更新服务器上的信息。因此,不能假设重新提交请求是安全的,这就是为什么大多数浏览器在POST请求中点击刷新时要求确认的原因


在安全方面,没有区别。这篇文章也许更加晦涩难懂,但那是另一回事。需要在另一层添加安全性,例如SSL。

有关GET请求的一些注意事项:

  • GET请求可以缓存
  • 获取请求保留在浏览器历史记录中
  • GET请求可以添加书签
  • 处理敏感数据时,绝不应使用GET请求
  • GET请求有长度限制
  • GET请求应仅用于检索数据
  • 关于POST请求的一些说明:

  • POST请求从不缓存
  • POST请求不会保留在浏览器历史记录中
  • 无法将POST请求添加书签
  • POST请求对数据长度没有限制

  • (来源:W3学校)

    +1我在这里引用了Security.SE上的这个答案:链接到这个来源就好了。