擅长:python、mysql、java
<p>以下是<a href="https://superuser.com/users/63387/jacob">Jacob</a>最初发布在<a href="https://superuser.com/a/739462/201684">Superuser</a>上的解释:</p>
<p>在为传输层安全(TLS)设置标准的RFC5246中,有一个称为心跳的函数。客户机和服务器来回发送一些数据以保持连接的有效性,以便以后使用。现在在实践中,客户机会发送一些数据,而服务器只会发送回来,一切都很好。但是,在受影响的OpenSSL版本中,没有检查客户机是否实际发送了它所发送的数据量。因此,如果我发送1B并告诉服务器我实际上发送了64kB,那么它会很高兴地将我发送回64kB。其他字节是从哪里来的?这就是钥匙。OpenSSL将把进程有权访问的64kB-1B内存发回给您,这取决于1B的存储位置。这些来自内存的额外字节是问题所在,因为它们可能包含有价值的信息,如私钥材料和服务器正在解密以使用的信息。例如:密码、信用卡信息和/或PIN。在</p>