alancaptcha / php
Alan Captcha API PHP SDK
dev-main
2024-07-25 08:01 UTC
Requires
- php: >=8.0
- nyholm/psr7: ^1.8
- psr/http-server-middleware: ^1.0
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
用法
获取一个挑战
挑战以 JWT
(JSON 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-JWT
和X-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\/.*'/]);