ハニーポットクラス
ハニーポットクラスを使用すると、**app/Config/Filters.php**ファイルで有効になっている場合、ボットがCodeIgniter4アプリケーションにリクエストを送信したかどうかを判断できます。これは、フォームにフォームフィールドを追加することで行われ、このフォームフィールドは人間には非表示ですが、ボットにはアクセス可能です。フィールドにデータが入力されると、リクエストがボットから来ているとみなされ、HoneypotException
をスローできます。
ハニーポットの有効化
ハニーポットを有効にするには、**app/Config/Filters.php**を変更する必要があります。$globals
配列からhoneypotのコメントを外すだけです。
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Filters extends BaseConfig
{
// ...
public $globals = [
'before' => [
'honeypot',
// 'csrf',
// 'invalidchars',
],
'after' => [
'toolbar',
'honeypot',
// 'secureheaders',
],
];
// ...
}
サンプルのハニーポットフィルターは、**system/Filters/Honeypot.php**としてバンドルされています。これが適切でない場合は、**app/Filters/Honeypot.php**に独自のフィルターを作成し、設定内の$aliases
を適切に変更してください。
ハニーポットのカスタマイズ
ハニーポットはカスタマイズできます。以下のフィールドは、**app/Config/Honeypot.php**または**.env**で設定できます。
$hidden
- ハニーポットフィールドの表示を制御するtrue
またはfalse
。デフォルトはtrue
$label
- ハニーポットフィールドのHTMLラベル。デフォルトは'Fill This Field'
$name
- テンプレートで使用されるHTMLフォームフィールドの名前。デフォルトは'honeypot'
$template
- ハニーポットに使用されるフォームフィールドテンプレート。デフォルトは'<label>{label}</label><input type="text" name="{name}" value="">'
$container
- テンプレートのコンテナタグ。デフォルトは'<div style="display:none">{template}</div>'
。CSPを有効にする場合は、style="display:none"
を削除できます。$containerId
- [v4.3.0以降] この設定は、CSPを有効にした場合のみ使用されます。コンテナタグのid属性を変更できます。デフォルトは'hpc'