허니팟 클래스

허니팟 클래스는 app/Config/Filters.php 파일에서 활성화된 경우, 봇(Bot)이 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에 직접 만들고, app/Config/Filters.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'입니다.