ivan-novakov/php-haveibeenpwned-client

A PHP 客户端库和 CLI 工具,用于 haveibeenpwned.com

1.0.1 2013-12-11 08:54 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:33:10 UTC


README

介绍

haveibeenpwned.com 网站是 Troy Hunt 的一个项目,允许您通过提交电子邮件地址来检查您的账户是否在最近的密码泄露中被泄露。您可以在相应的博客文章中找到有关该网站的更多信息 have-i-been-pwned.com 网站介绍

该网站还提供 RESTful 远程 API。这个库是一个简单的 PHP 客户端实现,可以与该 API 交互。它既是一个客户端库,也是一个客户端 CLI - 您可以在您的项目中使用它,或者使用提供的 CLI。

功能

  • 轻量级且易于扩展
  • SSL 支持,带有对等验证
  • 可用的 CLI

依赖

  • PHP >= 5.3.4
  • zendframework/zend-http - ZF2 HTTP 客户端实现
  • zendframework/zend-json - ZF2 JSON 编码/解码实现
  • symfony/console - 用于实现 CLI 的 Symfony 对象的 Console 组件
  • cURL - 用于 SSL 支持

安装

安装库的最简单方法是通过 composer。

作为独立的 CLI 使用

$ php composer.phar create-project ivan-novakov/php-haveibeenpwned-client php-haveibeenpwned-client ~1

将其添加到您的项目中

$ php composer.phar require ivan-novakov/php-haveibeenpwned-client:~1

CLI

该库附带基于 Symfony Console 组件的预置命令行界面。

用法

bin/hibp.php check [--ssl] [--ca-file="..."] [--plain] [--show-exceptions] email

选项

  • --ssl - 连接到远程服务时使用 SSL
  • --ca-file - 使用替代 CA 文件
  • --plain - 使用简单输出,适合解析
  • --show-exceptions - 显示异常(如果有),而不是错误消息,适合调试

基本用法

use InoHibp\Service;

$service = new Service();
try {
    $result = $service->checkEmail($email);
} catch (\Exception $e) {
    // handle exception
}

if (null === $result) {
    printf("Not pwned\n");
} else {
    printf("Pwned on these websites: %s\n", implode(', ', $result));
}

如果电子邮件没有被泄露,则 checkEmail() 方法返回 null,或者返回一个包含对应账户已泄露的网站名称的数组。如果发生错误,将抛出异常。

SSL 连接

默认情况下使用 HTTP 连接。要强制使用 SSL 连接,您需要使用 use_ssl 选项初始化服务

$service = new Service(array(
    'use_ssl' => true
));

该库使用 cURL PHP 扩展来处理 SSL 连接。它被配置为执行对等和主机验证 (CURLOPT_SSL_VERIFYPEER = trueCURLOPT_SSL_VERIFYHOST = 2)。有关如何在 PHP (ZF2) 中处理 SSL 连接的更多信息,请参阅我的博客文章 使用 Zend Framework 2 的 HTTPS 连接

对等验证与 haveibeenpwned.com 网站的 CA 根证书进行验证。CA 根证书存储在 ssl/ca-bundle.pem 中。如果出于某种原因需要更改它,可以指定替代路径到捆绑包

$service = new Service(array(
    'use_ssl' => true,
    'ca_file' => /alternative/path/ca-bundle.pem
));

异常

  • InoHibp\Exception\InvalidEmailException - 网站返回了状态码 400,这意味着电子邮件格式错误
  • InoHibp\Exception\UnexpectedResponseException - 非预期状态码,任何与支持的状态码不同的状态码(见文档
  • InoHibp\Exception\InvalidResponseFormatException - 当状态码为200且预期为JSON编码的网站列表时抛出,但解析失败
  • InoHibp\Exception\TransportException - HTTP连接错误
  • InoHibp\Exception\InvalidCaFileException - 表示包含服务器根CA证书的文件存在问题(不可读、格式无效等)

链接

许可证

作者