<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/***** ブルートフォースアタック対策 *****/
/*** 1. ハニーポット判定：ボット特有の動きを検知して即遮断 ***/
function haup_honeypot_check() {
	// POST送信（ログイン試行）時のみチェック
	if ( $_SERVER['REQUEST_METHOD'] !== 'POST' ) {
		return;
	}

	$is_bot = false;

	// A. 隠しフィールド "haup_url_field" に入力があればボット
	if ( !empty($_POST['haup_url_field']) ) {
		$is_bot = true;
	}

	// B. User-Agentが空（プログラムからの直接アクセス）ならボット
	if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
		$is_bot = true;
	}

	// ボットと判定されたら、DBに記録すらさせず即座に終了
	if ( $is_bot ) {
		status_header(403);
		exit('Access Denied: Bot detected.');
	}
}
add_action('login_init', 'haup_honeypot_check', 1);

/*** 2. ログインフォームに隠しフィールドを注入 ***/
function haup_honeypot_fields() {
	// 人間には見えず、ボットがつい入力してしまうフィールド
	// 既存の "url" という名前だとブラウザの自動入力が反応することがあるため、少し特殊な名前にしています
	echo '<p style="display:none !important;" aria-hidden="true"><label for="haup_url_field">Please leave this field empty</label><input type="text" name="haup_url_field" id="haup_url_field" value="" tabindex="-1" autocomplete="off" /></p>';
}
add_action('login_form', 'haup_honeypot_fields');