<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">SSL/TLS 关闭流程</string>
    <string name="">安全的 SSL/TLS 连接需要通过正确的关闭流程来安全地指示 [文件结束] 条件。该流程用于防止被称为 [截断攻击] 的安全威胁，攻击者可以通过关闭底层传输层来控制 SSL/TLS 连接中最后一条消息的长度。关闭流程包含双方交换 `close_notify` 消息。在 __Asio__ 中，这些步骤通过调用 `ssl::stream` 对象的 `shutdown()` 或 `async_shutdown()` 函数完成。</string>
    <string name="">error::stream_truncated</string>
    <string name="">某些 SSL/TLS 实现不执行正确的关闭流程，而是直接关闭底层传输层。因此，这些应用程序中的 EOF 条件不具备密码学安全性，不应依赖于此。然而，在某些场景下，HTTPS 客户端或服务器并不需要依赖 EOF 来确定最后一条消息的结束位置：</string>
    <string name="">* HTTP 消息带有 `Content-Length` 头部，且消息体已完整</string>
    <string name="">* HTTP 消息使用分块传输编码，且已接收到最后一个数据块。</string>
    <string name="">* HTTP 消息不包含消息体，例如所有 1xx 状态的响应</string>
    <string name="">在此类场景中，`http::read` 或 `http::async_read` 操作能够成功完成，因为这些操作无需等待 EOF。然而，如果继续对该流执行下一个操作，则会失败并抛出 [@boost:/doc/html/boost_asio/reference/ssl__error__stream_errors.html `net::ssl::error::stream_truncated`] 错误。</string>
    <string name="">例如，假设我们使用 Beast 与一台 HTTPS 服务器通信，而该服务器未执行正确的 SSL/TLS 关闭流程：</string>
    <string name="">不合规的对等端与未知的消息体长度</string>
    <string name="">这种情况比较罕见，但确实存在安全隐患：当 HTTPS 服务器没有执行正确的 SSL/TLS 关闭流程，并且它发送的 HTTP 响应消息需要依靠 EOF 来判断消息体何时结束时，就会产生安全问题。问题的根源在于，缺少 SSL/TLS 关闭流程时，EOF 就不再具有密码学上的安全性，消息体因此容易遭受截断攻击。</string>
    <string name="">以下示例用于从这类服务器读取 HTTP 响应：</string>
</resources>
