Если у вас магазин на WooCommerce, будьте осторожны — мошенники могут использовать ваш сайт для проверки краденых карт! Это называется «Card Testing Attack»: боты массово проводят мелкие транзакции, проверяя, какие карты ещё работают. Итог? Комиссии за обработку, возвраты и штрафы — неприятный удар по бизнесу.
Эта тема обсуждалась на Reddit: Card Testing Attack, и в качестве решения предлагался плагин OOPSpam Anti-Spam, вся мощь которого доступа только по платной подписке. Но я нашел другое решение. Большинство атак использует WooCommerce REST API без реферера, и их заказы отмечаются как «unknown». Значит, можно просто заблокировать подозрительные запросы с помощью кода в functions.php:
/** Disable wc_endpoint to stop carding attacks **/ function disable_wc_endpoint_v1() { $current_url = $_SERVER['REQUEST_URI']; if (strpos($current_url, '/wp-json/wc/store/v1/checkout') !== false) { wp_redirect(home_url('/404.php')); exit; } } add_action('rest_api_init', 'disable_wc_endpoint_v1');
Если сайту нужен API для оформления заказов, этот метод не подойдет, можно попробовать другое решение:
/** Disable wc_endpoint to stop carding attacks **/ function disable_wc_endpoint() { $current_url = $_SERVER['REQUEST_URI']; if (strpos($current_url, '/wp-json/wc/store/checkout') !== false) { wp_redirect(home_url('/404.php')); exit; } } add_action('rest_api_init', 'disable_wc_endpoint');
WP REST API Documentation: «If you wish to prevent your site from being accessed from unknown origins you may unhook the default rest_send_cors_headers
function from the rest_pre_serve_request
filter hook, then hook in your own function to that same filter to specify stricter CORS headers.»
UPD Решения хватило ненадолго. Боты ударили с новой силой и пришлось установить на страницу чекаута гугловскую рекапчу третьей версии (Google reCAPTCHA v3). Способов великое множестве. Я остановился на плагине reCaptcha Pro by BestWebSoft. У него более широкие возможности, которые пригодились мне на проблемном проекте.