服务器记录网站get post,GET 与 POST比较

Posted by 撒得一地 on 2016年5月9日 in 杂谈

4cb15082d778157592c90ea2b0676428.png

发起 HTTP 请求有四种基本方法:PUT、DELETE、POST 和 GET,通俗讲可以认为对应于增删改查四个方面。根据 HTTP 规范,GET 请求用于获取信息,是安全和幂等的,这里的安全并不代表不会泄露信息,而是说它用来获取信息,查询数据库,不会影响数据库的数据,也不会影响资源的状态;POST 请求则有可能会修改服务器上数据库的数据和资源的状态。

对于 

 标签,其 action 属性的默认值是 GET,可以修改为 POST。使用 GET 时,表单数据中的数据会被转义并以查询字符串的形式追加到 URL 的尾部;使用 POST 时,表单数据会依附请求体发送给服务器。

下面的表格从多方面比较了两者的差异:

维度

GET(HTTP)

POST(HTTP)

历史记录

由于数据被添加到了 URL 中,所以会保留在浏览器的历史记录之中

数据不会保留在浏览器的历史记录之中

书签

可收藏为书签

不可收藏为书签

后退和重新提交

如果 HTML 被浏览器缓存了,则重新执行 GET 请求可能不会向服务器重新提交数据

浏览器应该提醒用户:数据需要重新提交

编码格式

“application/x-www-form-urlencoded”

“multipart/form-data”(主要用于二进制数据)或 “application/x-www-form-urlencoded”

参数

长度受限于 URL 的长度,通常在 2K 以内,具体长度取决于浏览器和服务器

可发送参数,包括上传的文件等

是否可以修改

可被脚本修改

比较难修改

数据类型是否有限制

只接受 ASCII 字符,其他字符会被转义

无限制,可接收二进制数据

安全性

GET 相比于 POST 的安全性低,因为发送的数据在 URL 中可见,且可以被浏览器历史记录、服务器日志记录

POST 的参数不会被浏览器历史记录和服务器日记记录

数据长度限制

受限于 URL 的长度,通常小于 2K,具体限制取决于浏览器和服务器

无限制,实际上也受限于服务器,但相比 GET 要长很多

可用性

GET 请求不应该用于发送密码等私密信息

POST 请求可用于发送密码等私密信息

可见性

GET 请求对任何人都可见并且有长度限制

POST 请求的数据不会显示在 URL 中

缓存

可被缓存

不可被缓存

优点和缺点

当使用 GET 请求发送表单数据时:

表单数据只能是 ASCII 字符,其他字符需要被转义为 ASCII 格式,但 POST 请求可以处理二进制数据、图片和其他文件

所有的表单数据对于 URL 都是可见的,而且会被缓存在浏览器的历史记录中,降低了安全性

GET 请求的一个优势是表单数据可以被收藏为书签,也可以直接用于填充表单数据

表单数据的长度会受到 URL 长度的限制

易于遭受脚本攻击

服务器端

由于 GET 和 POST 对数据的编码方式不同,所以在服务端解码数据的方式也不同。在 ASP 中,服务端使用 Request.QueryString 获取 GET 请求参数,使用 Request.Form 获取 POST 请求参数。

HTTPS

使用 HTTPS 发起 GET 请求是否会更安全些呢?我们就做如下的请求来回答这一问题:

GET https://www.example.com/login.php?user=mickey&passwd=mini

假设有人监视了这一 GET 请求,那么他只会看到如下信息:

这是一个 HTTPS 链接

域名 www.example.com

请求的长度

响应的长度

URL 路径以及查询字符串都是不可见的。由此可见,在这些方面,GET 请求和 POST 请求的安全性相同。但是,浏览器仍然会记录 URL,所以无论是 HTTP 还是 HTTPS,使用 GET 发送敏感信息仍是不安全的。

原文:http://pinggod.com/2016/GET-vs-POST/

... other posts by psz1992

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值