当前位置:Gxlcms > PHP教程 > HTTPS协议中POST的数据是被加密的吗?

HTTPS协议中POST的数据是被加密的吗?

时间:2021-07-01 10:21:17 帮助过:20人阅读

回复内容:

HTTP本身所有的数据都是不加密的。准确的说,HTTPS不是一种协议,而是HTTP和SSL两种技术的组合。

SSL是Secure Socket Layer,安全套接字层,有时也成为TLS(Transport Layer Security),是介于传输层和应用层的一个拓展的层,可以透明的将应用层数据加密然后通过传输层送出去。因此,使用了SSL传输的HTTP报文,从HTTP Headers到主体都是加密的HTTP是应用层的协议
再看
计算机网络协议从应用层开始向下利用下层协议的原理就是在每层增加相应的头部信息。
下面是应用层协议HTTP
下面是TCP协议报文,数据部分填充的就是HTTP协议的内容

然后回答题主的问题,HTTP协议是整体被加密填充到TCP协议的报文数据部分的,所以不仅仅是post的数据部分 TCP层以上的Payload数据都是加密的。 首先可以很明确告诉你,访问HTTPS站点无论get请求中的数据还是post请求的都是加密的。不信可以参考 php中$_GET和$_POST函数。值不是提交到php文件么,我咋在地址栏中看不到php后缀名? - 军火大王理世酱的回答 里面的方法做个抓包的小实验,再通过关键词字符串查找。

至于有位答主说域名不加密,这是通过抓取普通的DNS数据包截获的,跟SSL/TLS协议本身并没有关系。如果你使用dnscrypt就可以避免直接泄漏访问的域名,但IP地址是公开的,在技术上并不是没有办法间接获取访问的域名。 是加密的 应该是先客户端先加密,后传输。SSL跟TLS不是一回事,但他们很相似,TLS是SSL的继任者。
SSL是个二进制协议,HTTP是个字符型协议。如果地址以HTTPS开头的话,客户端会先用HTTP协议连接目标服务器的80端口,(这个过程是不加密的)。这个过程交换双方协议的版本号,选择双方都了解的密码,对双方身份进行验证,生成临时的会话密匙。接着,客户端利用相应的参数跟服务器进行通信,从这里开始就开始加密了。 不是加密的,http本身并不提供加密功能,你抓包看到的加密数据是http下面的会话层加密的(ssl)

人气教程排行