ハニーポットクラス

ハニーポットクラスを使用すると、**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'