padraic/humbug_get_contents

PHP 5.3+ 使用的 secure wrapper,用于访问 HTTPS 资源

1.1.2 2018-02-12 18:47 UTC

This package is not auto-updated.

Last update: 2024-09-13 23:06:52 UTC


README

Package version Build Status Slack License

定义了一个 Humbug\get_contents() 函数,它将透明地调用 file_get_contents(),但对于 HTTPS URI,它将注入一个配置以在 PHP 5.3+ 所有版本上启用安全的 SSL/TLS 请求。

5.6 以下的 PHP 版本不仅默认禁用了 SSL/TLS 保护,而且大多数其他默认选项都设置得不够安全。这导致了 file_get_contents() 用于检索 HTTPS 资源的不安全使用扩散,例如 PHAR 文件或 API 请求。没有 SSL/TLS 保护,所有此类请求都容易受到中间人攻击,黑客可以注入假响应,例如定制的 php 文件或 json 响应。

安装

composer require padraic/humbug_get_contents

使用

$content = Humbug\get_contents('https://www.howsmyssl.com/a/check');

您可以在任何可能进行 HTTP 请求的代码位置使用此函数作为 file_get_contents() 的直接替代。

此解决方案最初是在 Composer 安装器中实现的,因此这是一个简单地将代码提取到一个包含一个函数的独立包中的操作。它借用了 Composer 和 Sslurp 中的函数。

在罕见的情况下,此函数在尝试检索 HTTPS URI 时会发出抱怨。这实际上是重点;()。错误应该有两个原因

  • 无法找到有效的 cafile,即您的服务器配置错误或缺少软件包
  • 请求的 URI 无法验证,即在浏览器中这会是一个红色的页面警告

这都不构成禁用 SSL/TLS 并让最终用户容易受到黑客攻击的借口。解决此类错误;不要忽视或绕过它们。

头部

您可以使用以下函数设置请求头部,并获取响应头部。此支持基于流上下文,但在此以某些有限的形式提供,作为一种便利。如果您需要扩展此功能,您应使用更完整的解决方案,并确保它完全启用并支持 TLS。

// Don't end headers with \r\n when setting via array
Humbug\set_headers([
    'Accept-Language: da',
    'User-Agent: Humbug',
]);

$response = Humbug\get_contents('http://www.example.com');

请求头部在使用时将被清空,因此您需要在每次 Humbug\get_contents() 调用中重置。

检索最后响应头部的数组

$response = Humbug\get_contents('http://www.example.com');
$headers = Humbug\get_headers();

升级

升级指南

贡献

贡献指南