Rest HTTP Get和HTTP-POST之间有什么区别?为什么HTTP-POST在安全性方面较弱
有人能解释HTTP-GET和HTTP-POST之间的区别吗?为什么人们说HTTP-POST在安全性方面较弱?在HTTP GET请求中,在URL中指定键/值对: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 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请求的一些注意事项:
(来源:W3学校)+1我在这里引用了Security.SE上的这个答案:链接到这个来源就好了。