Alan Captcha API PHP SDK

dev-main 2024-07-25 08:01 UTC

This package is not auto-updated.

Last update: 2024-09-19 13:20:51 UTC


README

此包允许使用 Alan Captcha API。
有关 API 的更多详情和其他集成选项(如 JavaScript 小部件和 WordPress、TYPO3 或 Neos CMS 的 CMS 插件),请参阅 https://docs.alancaptcha.com

安装

需要 PHP 8.0 或更高版本。

使用 Composer 进行安装

composer require alancaptcha/php

用法

获取一个挑战

挑战以 JWTJSON Web Token)的形式编码。要获取此类令牌,您只需要创建一个 API 实例并提供您的公共 siteKey

$api = new \AlanCaptcha\Php\AlanApi();
$challengeJWT = $api->challenge('YOUR-PUBLIC-SITEKEY');

然后您可以使用此 JWT 将其发送给客户端,并要求他们解决 JWT 中编码的挑战。

获取更困难的挑战

siteKey 编码了一个默认难度,这是在创建 siteKey 时指定的。
但是,如果您检测到对您的基础设施的滥用,您也可以自己提高难度。

$api = new \AlanCaptcha\Php\AlanApi();
$challengeJWT = $api->challenge(siteKey: 'YOUR-PUBLIC-SITEKEY', difficulty: 19);

您可能需要测试几个难度变体以更好地了解其影响。

验证解决方案

挑战的解决方案是一个包含拼图 ID 和相应解决方案的数组,例如。

[
  {"id":"e362a59c229946c061bf1afa3ceed7","solution":"000000000362"},
  {"id":"ee0e97c214df54928fab2935760cd9","solution":"000000001616"}
]

要验证挑战 JWT 的解决方案,您需要提供您的私有 apiKey、挑战 JWT 和解决方案数组

$api = new \AlanCaptcha\Php\AlanApi();
$isValid = $api->challengeValidate($yourPrivateApiKey, $challengeJWT, $solutions);

PSR-15 中间件

此包还提供了一个 PSR-15 中间件。
使用此中间件,您可以通过使用提供的中间件或覆盖中间件并更改一些与您的项目相关的相关部分来轻松地为您的项目添加 Alan Captcha 验证。

中间件的功能

  • 它可以通过 HTTP 请求头 X-Alan-JWTX-Alan-Solution 验证挑战,其中 X-Alan-JWT 是用于解决挑战检索的 JWT,而 X-Alan-Solution 是解决方案的 json 编码数组。
    使用 HTTP 请求头,对您的项目和企业级基础设施的影响最小,但为您的 HTTP 端点提供了良好的安全性。
  • 验证由 Alan Captcha 浏览器小部件创建的表单 POST 请求
  • 配置哪些端点需要 Alan Captcha 验证,哪些不需要

示例

$alanMiddleware = new \AlanCaptcha\Php\Middleware\AlanCaptchaMiddleware();
$alanMiddleware->setApiKey('YOUR-PRIVATE-APIKEY')->setIncludePaths(['/\/api\/.*'/]);