是否可以截取纯文本形式的安全请求的有效载荷?

时间:2018-08-01 14:31:08

标签: security ssl encryption https request

考虑我们运行以下请求:

url="https://secretsub.example.com/secretpath/post.php" 
payload = {'secretmessage1' : 'foo','secretmessage2' : 'bar'}
r = requests.post(url,data=payload,verify=True)

语言(python)只是任意的,但可以是对任何其他语言(NodeJs,Java,Php ...)的请求

请注意,该网址使用的是 https ,这意味着该连接已通过SSL进行保护。假设我将该程序编译为二进制( .exe ),计算机是否可以通过软件以纯文本格式读取有效载荷?

我知道数据包嗅探软件(例如WireShark)只会以纯文本形式显示域名( example.com ),而不会显示加密路径或将被加密的有效载荷。

但是,如果我在Web 浏览器中运行此代码(假设它是用Java脚本编写的),则可以简单地访问有效负载和 secretpath 浏览器控制台中的文本。我假设浏览器仅在将请求记录到其控制台后才对其进行加密。但是,如果此代码在浏览器外部运行,计算机主机是否有办法拦截纯文本格式的数据? (某种类型的数据包嗅探工具)

2 个答案:

答案 0 :(得分:0)

只能看到域名,有效负载和路径已加密,并且只能由客户端和Web服务器之间协商的会话密钥解密。但是您计算机上的恶意软件可能能够访问它,例如,可以访问应用程序使用的内存,或者使用带有某种后门的不安全编程库。

答案 1 :(得分:0)

https所做的是启动证书交换,因此您的客户端将从服务器接收证书,以验证服务器是谁,并允许客户端通过通道1(网络)加密数据。

第一位-验证服务器是否是他们声称的身份-依赖于称为证书链的内容。您收到的证书将使用颁发者的私钥进行签名。您的客户应使用您应该“已经拥有”的颁发者公用密钥来检查此证书。

大多数操作系统都有受信任的根证书的列表。在Windows中,您可以在证书管理器中看到它们。

在不了解python的情况下-@Patrick Mevzek暗示您可以提供根CA(证书颁发机构)或使用操作系统之一。如果您使用的是操作系统-您可能需要检查其安装位置。

我希望所有这些都是自动的-它是您指定的协议(即https)的一部分。但是-您可能需要与python使用者确认。

大多数人都忽略了这一切-这非常重要。如果您不验证证书,则很容易遭受“中间人”攻击或DNS欺骗。

基本上,我可以使用台式机上的几个工具为secretsub.example.com颁发证书。它不会由有效的CA进行签名,但是如果您不对其进行检查,那么我可以将该证书放在一个代理服务器中(中间人),当您重新录入证书时,我的代理服务器将从真实证书中获取真正的证书。服务器,建立HTTP连接,但是将我的证书颁发给您的应用程序。然后,您将使用我的证书加密到我的代理,以便我可以读取您的数据,然后将其转发到真实的服务器-您永远不会知道! (许多公司代理完全对员工这样做)。

或者,如果我可以更改您的DNS以将IP指向服务器,则可以做几乎相同的事情-充当代理。

完成后,数据将在整个网络中加密。

所以-是的,HTTPS将在整个网络上进行加密-但是请检查证书是否有效。

很明显,有人指出-数据在客户端计算机上是清晰的-就像现在在您的浏览器中一样。

斯图尔特