Иван Данилин

Иван Данилин

Fullstack WordPress Developer

Если у вас магазин на 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. У него более широкие возможности, которые пригодились мне на проблемном проекте.