matt / sycaptcha

验证码表单保护包,包括 reCaptcha 和 hCaptcha

安装: 8

依赖: 0

建议: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v1.0.0 2021-10-28 19:47 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:10 UTC


README

SyCaptchaBundle 是为 Symfony 定制的表单保护包,包含一组 CAPTCHA 挑战,旨在阻止任何恶意请求提交您的表单。

支持的 CAPTCHA

目前支持三种类型的 CAPTCHA

  1. reCaptcha V2 - 由 Google 提供
  2. reCaptcha V3 - 由 Google 提供
  3. hCaptcha - 由 Intuition Machines 提供

由于它是 reCaptcha V3 的“低端”版本,因此不支持隐形 reCaptcha V2

安装

使用 composer require

composer require matt/sycaptcha

无 symfony/flex 的配置

当没有选项安装/升级到 symfony/flex 时,您可以手动配置所有必要的文件

1. 注册包

config/bundles.php 中注册包 Symfony 4/5

return [
    Matt\SyCaptchaBundle\SyCaptchaBundle::class => ['all' => true],
];

app/AppKernel.php 中注册包 Symfony 3 及以下

public function registerBundles()
{
    return [
        new Matt\SyCaptchaBundle\SyCaptchaBundle(),
    ];
}

2. 添加配置文件

config/packages/sy_captcha.yaml (或使用 Symfony 3 或以下版本的 app/config/config.yml)

sy_captcha:  
  recaptcha_v2:  
    site_key: 'site_key'  
    secret_key: 'secret_key'  

使用

让我们终于来谈谈如何将这些 CAPTCHA 集成到您的表单中。

1. 创建表单并添加 CAPTCHA 保护

您可以将所有三种 CAPTCHA 同时添加到表单中(是的,这有点过度),但是它们都需要正确配置。

<?php  

use Matt\SyCaptchaBundle\Form\Type\SyCaptchaHCaptchaType;  

class FormType extends AbstractType  
{  
  public function buildForm(FormBuilderInterface $builder, array $options): void  
  {  
	  $builder->add('captcha', SyCaptchaHCaptchaType::class);
  }  
}

2. 如有需要配置 CAPTCHA

有一系列参数可以用于配置 CAPTCHA 和其脚本。大多数参数通过配置文件设置(更多在配置部分),少数通过表单选项声明。这些是

  1. action_name - 设置操作名称(仅适用于 reCaptcha V3)
  2. theme - 将 CAPTCHA 主题设置为浅色/深色(仅适用于 reCaptcha V2 和 hCaptcha)
  3. script_nonce_csp - 设置通过 CAPTCHA 小部件注入的所有脚本的 nonce

完整配置说明

完整配置现在看起来像这样

sy_captcha:  
  enabled: true  
  recaptcha_v2:  
    site_key: null  
    secret_key: null  
    api_host: 'www.google.com'  
  recaptcha_v3:  
    site_key: null  
    secret_key: null  
    api_host: 'www.google.com'  
    score_threshold: 0.5  
  hcaptcha:  
    site_key: null  
    secret_key: null  
    api_host: 'js.hcaptcha.com'  
    invisible: false

如您所见,有一些可配置的选项和它们的默认值。让我们稍微分解一下脚本,请注意,某些选项仅适用于 hCaptcha,某些仅适用于 reCaptcha,等等。

  • enabled - 定义是否启用 CAPTCHA 验证(例如,在开发时禁用整个页面的验证)
  • site_key - 这是您通过 reCaptcha 或 hCaptcha 控制台获得的值,它代表您网站的公钥
  • secret_key - 这是您通过 reCaptcha 或 hCaptcha 控制台获得的值,它代表您的网站密钥,用于验证响应
  • score_threshold - reCaptcha V3 通过响应发送用户分数,将 score_threshold 设置为小于 0.5 将使机器人(但不仅是机器人)更难通过此 CAPTCHA
  • api_host - 可以用于启用全球 CAPTCHA,您无法访问 www.google.com(在中国),因此他们的 CAPTCHA 也无法在那里工作,因此您需要将其设置为 www.recaptcha.net

将 .ENV 值包含到配置中

这只是一个小贴士,你可以在你的Symfony配置中包含.ENV值。你只需在配置中通过%env(变量)%标签来引用它。

sy_captcha:
    enabled: '%env(SYCAPTCHA_ENABLED)%'

待办事项

未来计划的小列表

  • Cloudflare IP解析,(实现解析接口)
  • 翻译
  • 自定义样式(指.css样式)