WordPress.org

Plugin Directory

WordSec – сканер і видалення шкідливого ПЗ, Firewall вебзастосунків (WAF) та 2FA

WordSec – сканер і видалення шкідливого ПЗ, Firewall вебзастосунків (WAF) та 2FA

Опис

WordSec є повноцінним плагіном безпеки WordPress. Вісім модулів охоплюють firewall, сканер шкідливого ПЗ, безпеку входу, живий трафік, блокування за IP та країною, аналіз ланцюга постачання, журнал аудиту й сповіщення, тому ви блокуєте атаки та зміцнюєте сайт з однієї панелі замість встановлення восьми плагінів.

Якщо ваш сайт зламають, ви втратите не лише сайт. Ви втратите довіру клієнтів, позиції в пошуку та дні роботи на відновлення резервних копій. WordSec створено, щоб не допустити цього, і щоб допомогти вам відновитися, якщо це вже сталося: сканер знаходить шкідливе ПЗ, карантин прибирає його з дороги, а змінені файли ядра, плагінів і тем відновлюються з оригінальних копій.

Безкоштовно, і ліцензійний ключ вводити не потрібно. Правила firewall WAF, сканування шкідливого ПЗ і цілісності файлів, захист від brute force, двофакторна автентифікація, блокування за IP та країною, журнал аудиту й посилення захисту одним кліком працюють локально на вашому власному сервері.

Firewall вебзастосунків (WAF)

  • Конструктор власних правил з regex і масками підстановки
  • Вбудовані правила для SQL injection, XSS, path traversal, PHP і command injection
  • Режими навчання та активного захисту, блокування ботів, заголовки безпеки, rate limiting
  • Понад 25 перемикачів посилення захисту для доступу до wp-config, переліку авторів і REST API
  • Необов’язковий розширений захист: перевірка запитів до завантаження WordPress (за вашою згодою, повністю оборотно)

Сканер і видалення шкідливого ПЗ

  • Правила виявлення шкідливого ПЗ у файлах, базі даних і запланованих завданнях
  • Перевірка цілісності файлів ядра, плагінів і тем через API WordPress.org
  • Заплановані сканування, карантин і відновлення одним кліком
  • Видалення шкідливого ПЗ на зламаному сайті: помістіть знахідку в карантин або відновіть змінений файл ядра, плагіна чи теми з оригінальної копії

Безпека входу, двофакторна автентифікація (2FA) і захист від brute force

  • Двофакторна автентифікація на основі ролей (RFC 6238 TOTP)
  • reCAPTCHA, hCaptcha та Cloudflare Turnstile, а також вбудована математична CAPTCHA
  • Захист від brute force з прогресивним блокуванням, honeypot і перейменуванням URL входу
  • Перевірка паролів з витоків, керування сесіями, власна сторінка входу

Живий трафік

  • Журналювання запитів у реальному часі з виявленням ботів та експортом у CSV
  • Фільтрація винятків за роллю, IP, країною або URI

Блокування за IP та країною

  • Списки дозволених чи заблокованих країн і континентів
  • Блокування окремих IP та діапазонів CIDR, тимчасове чи постійне, з підтримкою списку дозволених

Ланцюг постачання та аналіз загроз

  • Оцінка репутації та виявлення покинутих плагінів
  • Сповіщення про відомі вразливості ядра, плагінів, тем і PHP
  • Перевірка цілісності оновлень з резервними копіями та інвентаризацією SBOM

Журнал аудиту

  • Повне відстеження активності для 11 типів об’єктів та 14 дій

Сповіщення

  • 36 типів подій сповіщень з доставкою через Email, Telegram або Slack

Усі функції працюють локально, без ліцензійного ключа. За бажанням служба WordSec на wordsec.net постачає дані аналізу загроз, які неможливо отримати локально: керовані набори правил WAF, стрічку сигнатур шкідливого ПЗ, списки репутації IP, базу GeoIP і записи про вразливості. Підключення необов’язкове, і кожну зовнішню службу описано нижче в розділі «Зовнішні служби».

Зовнішні сервіси

WordSec розроблений для локальної роботи, і без ліцензійного ключа він не надсилає жодних вихідних запитів до сервісу WordSec. Основна фільтрація запитів та сканування файлів виконуються на вашому сервері. До перелічених нижче сервісів звертаються лише для конкретних описаних функцій, і до більшості з них лише коли ви явно вмикаєте відповідну функцію (або, для WordSec API, лише після активації ліцензійного ключа). Цей розділ документує кожен сторонній сервіс, до якого плагін може підключатися, та дані, які отримує кожен із них.

WordSec API (api.wordsec.net)

WordSec працює безкоштовно без ліцензії, і в цьому випадку взагалі не звертається до цього сервісу. Безкоштовна ліцензія доступна кожному; щойно ви активуєте ключ, плагін взаємодіє з сервісом WordSec для двох окремих цілей:

  1. Обов’язкові виклики сервісу (лише поки активний ліцензійний ключ): активація та перевірка ліцензії, а також оновлення даних про загрози (правила брандмауера, сигнатури шкідливого коду, списки репутації IP, дані GeoIP, список доменів одноразової електронної пошти та дані про відомі вразливості). Вони вмикають хмарні функції та не можуть виконуватися локально; без ключа жоден із цих викликів не здійснюється. Локальний код застосування цих функцій (рушій WAF, сканер шкідливого коду, фільтри блокування за IP та фільтр обмеження реєстрації) завжди присутній та активний; без актуальної стрічки він просто не має даних про загрози, з якими можна порівнювати запити.

* Коли: під час активації/перевірки та планових перевірок оновлень даних про загрози.
* Надсилані дані: URL-адреса вашого сайту та ліцензійний ключ (використовуються для вашої автентифікації та прив’язки ліцензії до цього сайту), а для перевірок оновлень також поточні версії встановлених стрічок даних про загрози.

  1. Необов’язкова телеметрія використання/середовища (OPT-IN, ВИМКНЕНО за замовчуванням): анонімний щоденний знімок, що використовується для покращення WordSec. Він надсилається лише після того, як ви явно ввімкнете «Ділитися даними про використання & середовище» (під час активації ліцензії або в Налаштування Додатково Дані використання), і його можна вимкнути будь-коли.

* Коли: раз на день, лише поки увімкнено згоду (opt-in).
* Надсилані дані: неперсональний знімок середовища сайту (версії сервера, WordPress, PHP та бази даних, список активних плагінів і тем) та агрегована статистика використання функцій WordSec і безпеки. Жодні паролі, облікові дані бази даних, секретні ключі чи адреси електронної пошти ніколи не надсилаються.

  • Умови обслуговування: https://wordsec.net/terms
  • Політика конфіденційності: https://wordsec.net/privacy

Have I Been Pwned (api.pwnedpasswords.com)

Використовується необов’язковою перевіркою скомпрометованих паролів для виявлення, чи з’являється пароль у відомих витоках даних, за допомогою k-anonymity.
* Коли: коли користувач встановлює або надсилає пароль та увімкнено перевірку скомпрометованих паролів.
* Надсилані дані: лише перші 5 символів SHA-1-хешу пароля. Сам пароль та його повний хеш ніколи не залишають ваш сайт.
* Умови & Конфіденційність: https://haveibeenpwned.com/Privacy

API WordPress.org (api.wordpress.org, downloads.wordpress.org, wordpress.org, core.svn.wordpress.org, plugins.svn.wordpress.org, themes.svn.wordpress.org)

Використовується для перевірки цілісності файлів ядра, плагінів і тем WordPress, для отримання публічної інформації про плагіни/теми (plugins_api/themes_api) задля оцінок репутації в ланцюзі постачання та перевірок цілісності оновлень, для завантаження мовного пакета перекладу самого WordSec із translate.wordpress.org, коли ви обираєте мову відображення, яка ще не встановлена (той самий механізм, який використовує сам WordPress при зміні мови сайту), а також (лише коли ви натискаєте «Відновити» на результаті сканування) для завантаження оригінальної копії зміненого файлу ядра/плагіна/теми, щоб його можна було відновити. Завантаження для відновлення отримують окремі оригінальні файли з plugins.svn.wordpress.org / themes.svn.wordpress.org / core.svn.wordpress.org, а в разі потреби переходять до повних пакетів із downloads.wordpress.org (zip-архіви плагінів/тем) та wordpress.org (zip-архіви випусків ядра).
* Коли: під час сканувань шкідливого коду/цілісності та перевірок репутації ланцюга постачання, за явної дії з відновлення, а також коли ви зберігаєте мову відображення, переклад якої ще не встановлено.
* Надсилані дані: версія ядра WordPress, локаль сайту та слаги/версії плагінів/тем, що перевіряються; у разі завантаження мови надсилаються слаг/версія плагіна та обрана локаль.
* Умови & Конфіденційність: https://wordpress.org/about/privacy/

RDAP (rdap.org)

Використовується інструментом пошуку WHOIS/RDAP на сторінці Інструменти для показу інформації про власника IP-адреси або домену, які ви перевіряєте.
* Коли: лише коли ви запускаєте інструмент пошуку WHOIS/RDAP.
* Надсилані дані: IP-адреса або домен, які ви вибрали для пошуку.
* Умови & Конфіденційність: https://about.rdap.org/

ipify (api.ipify.org)

Використовується засобом перевірки чорного списку на сторінці Інструменти та інструментом інформації про сервер для визначення власної публічної IP-адреси вашого сервера.
* Коли: лише коли ви запускаєте інструмент «Перевірка чорного списку» або «IP-адреси сервера».
* Надсилані дані: звичайний запит від вашого сервера; жодні дані сайту не включаються (сервіс просто повертає IP, що надіслав запит).
* Умови & Конфіденційність: https://www.ipify.org/

Провайдери чорних списків DNS (інструмент «Перевірка чорного списку»)

Функція «Перевірка чорного списку» на сторінці Інструменти надсилає запити до чорних списків на основі DNS (DNSBL), щоб повідомити, чи внесено публічну IPv4-адресу вашого сервера до списку. Кожен провайдер отримує стандартний DNS-запит, що містить IP-адресу вашого сервера у зворотному форматі. Опитується п’ять провайдерів:
* Spamhaus ZEN (zen.spamhaus.org) – https://www.spamhaus.org/privacy-notice/
* SpamCop (bl.spamcop.net), керується Cisco – https://www.cisco.com/c/en/us/about/legal/privacy-full.html
* Barracuda Reputation Block List (b.barracudacentral.org) – https://www.barracuda.com/company/legal/privacy-policy
* UCEPROTECT Level 1 (dnsbl-1.uceprotect.net) – https://www.uceprotect.net/en/index.php
* PSBL (psbl.surriel.com) – https://psbl.org/
Деталі:
* Коли: лише коли ви натискаєте «Перевірка чорного списку» на сторінці Інструменти.
* Надсилані дані: публічна IPv4-адреса вашого сервера, вбудована в кожен запит до чорного списку DNS.

Telegram Bot API (api.telegram.org)

Необов’язковий канал доставки сповіщень. Активний лише коли ви налаштовуєте власний токен бота Telegram та ID чату.
* Коли: коли спрацьовує увімкнене вами сповіщення безпеки та налаштована доставка через Telegram.
* Надсилані дані: текст повідомлення сповіщення (тип події, назва сайту, відповідний контекст IP/користувача) до налаштованого вами бота/чату.
* Умови обслуговування: https://telegram.org/tos
* Політика конфіденційності: https://telegram.org/privacy

Вхідні вебхуки Slack (hooks.slack.com)

Необов’язковий канал доставки сповіщень. Активний лише коли ви налаштовуєте власну URL-адресу вхідного вебхука Slack.
* Коли: коли спрацьовує увімкнене вами сповіщення безпеки та налаштована доставка через Slack.
* Надсилані дані: текст повідомлення сповіщення (тип події, назва сайту, відповідний контекст IP/користувача) до налаштованого вами вебхука.
* Умови обслуговування: https://slack.com/terms-of-service
* Політика конфіденційності: https://slack.com/privacy-policy

Google reCAPTCHA (www.google.com, www.gstatic.com)

Необов’язкова CAPTCHA для входу/реєстрації. Активна лише коли ви обираєте reCAPTCHA та надаєте власні ключі.
* Коли: на формах входу та реєстрації, поки увімкнено.
* Завантажується віддалено: reCAPTCHA потребує завантаження свого скрипта віджета (www.google.com/recaptcha/api.js, що постачається з ресурсами з www.gstatic.com) від Google у браузері відвідувача; він додається до черги лише на цих формах і лише поки reCAPTCHA є вибраним провайдером. Перевірка токена є серверним викликом від вашого сайту до www.google.com.
* Надсилані дані: токен відповіді CAPTCHA, ваш публічний ключ сайту та IP-адреса відвідувача.
* Умови обслуговування: https://policies.google.com/terms
* Політика конфіденційності: https://policies.google.com/privacy

hCaptcha (hcaptcha.com, js.hcaptcha.com)

Необов’язкова CAPTCHA для входу/реєстрації. Активна лише коли ви обираєте hCaptcha та надаєте власні ключі.
* Коли: на формах входу та реєстрації, поки увімкнено.
* Завантажується віддалено: hCaptcha потребує завантаження свого скрипта віджета (js.hcaptcha.com/1/api.js) від hCaptcha у браузері відвідувача; він додається до черги лише на цих формах і лише поки hCaptcha є вибраним провайдером. Перевірка токена є серверним викликом від вашого сайту до hcaptcha.com.
* Надсилані дані: токен відповіді CAPTCHA, ваш публічний ключ сайту та IP-адреса відвідувача.
* Умови обслуговування: https://www.hcaptcha.com/terms
* Політика конфіденційності: https://www.hcaptcha.com/privacy

Cloudflare Turnstile (challenges.cloudflare.com)

Необов’язкова CAPTCHA для входу/реєстрації. Активна лише коли ви обираєте Turnstile та надаєте власні ключі.
* Коли: на формах входу та реєстрації, поки увімкнено.
* Завантажується віддалено: Turnstile потребує завантаження свого скрипта віджета (challenges.cloudflare.com/turnstile/v0/api.js) від Cloudflare у браузері відвідувача; він додається до черги лише на цих формах і лише поки Turnstile є вибраним провайдером. Перевірка токена є серверним викликом від вашого сайту до challenges.cloudflare.com.
* Надсилані дані: токен відповіді CAPTCHA, ваш публічний ключ сайту та IP-адреса відвідувача.
* Умови обслуговування: https://www.cloudflare.com/website-terms/
* Політика конфіденційності: https://www.cloudflare.com/privacypolicy/

ipwhois.io (ipwho.is)

Необов’язкова служба відомостей про IP, типово вимкнена. Усі запити виконуються через HTTPS з перевіркою сертифіката, і жоден з них не надсилається, доки ви не увімкнете «Служба зовнішнього пошуку IP» у налаштуваннях WordSec (розділ «Обробка IP-адреси відвідувача»). Вона використовується рівно для одного: для пошуку відомостей про IP у живому трафіку (країна, регіон, місто, ISP, організація, ASN). Журналювання трафіку ніколи не звертається до цієї служби; визначення країни під час журналювання використовує лише локальну базу GeoIP.
* Коли: лише поки увімкнено згоду на службу зовнішнього пошуку IP і лише за вашим кліком у вікні відомостей про IP.
* Надіслані дані: IP-адреса, яку ви обрали для перевірки.
* Умови обслуговування: https://ipwhois.io/terms
* Політика конфіденційності: https://ipwhois.io/privacy

VirusTotal (virustotal.com)

Не контактується автоматично. Сканер показує посилання «Перевірити на VirusTotal», яке ви можете натиснути, щоб відкрити VirusTotal у браузері для конкретного файлу.
* Коли: лише коли ви натискаєте посилання.
* Надсилані дані: хеш файлу, що міститься в URL-адресі посилання.
* Умови & Конфіденційність: https://docs.virustotal.com/docs/privacy-policy

Qualys SSL Labs (ssllabs.com)

Не контактується автоматично. Тест «Перевірка стану SSL» на сторінці Інструменти виконується повністю на вашому власному сервері (він відкриває TLS-з’єднання з вашим власним доменом і зчитує сертифікат). Поруч із ним посилання «Глибоке сканування (SSL Labs)» відкриває тест Qualys SSL Labs у новій вкладці браузера; після цього SSL Labs підключається до вашого сайту ззовні та оцінює його конфігурацію TLS. Посилання містить прапорець «приховати результати», тому звіт не публікується на публічній дошці SSL Labs.
* Коли: лише коли ви натискаєте посилання «Глибоке сканування (SSL Labs)».
* Надсилані дані: доменне ім’я вашого сайту, що міститься в URL-адресі посилання.
* Умови: https://www.ssllabs.com/about/terms.html
* Конфіденційність: https://www.qualys.com/company/privacy/

Подяки

WordSec включає перелічені нижче сторонні бібліотеки. Кожна бібліотека поширюється за ліцензією, сумісною з власною ліцензією WordSec «GPLv2 or later». Кожна включена бібліотека зберігає свій внутрішньофайловий банер ліцензії та/або файл ліцензії з першоджерела, а повний оригінальний (немінімізований) вихідний код кожної доступний за посиланням на проєкт і версію.

Бібліотеки PHP (`vendor/`)

TCPDF 6.11.3
* Ліцензія: LGPL-3.0-or-later
* Авторське право: Nicola Asuni, Tecnick.com LTD
* Джерело: https://github.com/tecnickcom/TCPDF
* Файл ліцензії: vendor/tecnickcom/tcpdf/LICENSE.TXT
* Використовується для: генерації звітів/експорту у PDF

SimpleXLSXGen 1.5.x
* Ліцензія: MIT
* Авторське право: (c) 2020-2022 Sergey Shuchkin
* Джерело: https://github.com/shuchkin/simplexlsxgen
* Файл ліцензії: vendor/shuchkin/simplexlsxgen/LICENSE
* Використовується для: експорту у XLSX (Excel)

Бібліотеки JavaScript / CSS (`assets/*/vendor/`)

Select2 4.1.0-rc.0
* Ліцензія: MIT
* Авторське право: Kevin Brown, Igor Vaynberg та учасники Select2
* Джерело: https://github.com/select2/select2
* Текст ліцензії: https://github.com/select2/select2/blob/master/LICENSE.md
* Включені файли: assets/js/vendor/select2.min.js, assets/css/vendor/select2.min.css

ApexCharts 5.16.0
* Ліцензія: MIT
* Авторське право: (c) 2018-2026 ApexCharts
* Джерело: https://github.com/apexcharts/apexcharts.js
* Текст ліцензії: https://github.com/apexcharts/apexcharts.js/blob/main/LICENSE
* Включені файли: assets/js/vendor/apexcharts.min.js

jsVectorMap 1.7.0
* Ліцензія: MIT
* Авторське право: (c) Mustafa Omar та учасники jsVectorMap
* Джерело: https://github.com/themustafaomar/jsvectormap
* Текст ліцензії: https://github.com/themustafaomar/jsvectormap/blob/master/LICENSE
* Включені файли: assets/js/vendor/jsvectormap.min.js, assets/css/vendor/jsvectormap.min.css
* Використовується для: візуалізацій карти світу (Живий трафік / Блокування / Брандмауер)

Дані карти світу (world_mill), зареєстровані як карта «world» для jsVectorMap
* Ліцензія: MIT
* Авторське право: учасники jvectormap-content; геометрія карти походить від Natural Earth (public domain)
* Джерело: https://www.npmjs.com/package/jvectormap-content
* Включені файли: assets/js/vendor/world.js
* Використовується для: геометрії країн, що відображається у візуалізаціях карти світу вище

qrcode-generator 1.4.4
* Ліцензія: MIT
* Авторське право: Kazuhiko Arase
* Джерело: https://github.com/kazuhikoarase/qrcode-generator
* Текст ліцензії: https://github.com/kazuhikoarase/qrcode-generator/blob/master/LICENSE
* Включені файли: assets/js/vendor/qrcode.min.js

Іконки / ресурси

flag-icons (SVG-зображення прапорів країн)
* Ліцензія: MIT (SVG-розмітка); самі дизайни прапорів перебувають у суспільному надбанні (public domain)
* Авторське право: (c) 2013 Panayiotis Lipiridis
* Джерело: https://github.com/lipis/flag-icons
* Текст ліцензії: https://github.com/lipis/flag-icons/blob/main/LICENSE
* Включені файли: assets/images/flags/*.svg (прапори країн, 4×3 viewBox="0 0 640 480")

Скріншоти

Встановлення

  1. Завантажте файли плагіна до /wp-content/plugins/wordsec/ або встановіть через екран Плагіни у WordPress.
  2. Активуйте плагін через екран Плагіни у WordPress.
  3. Відкрийте меню WordSec, щоб почати налаштування.

Активація лише створює таблиці бази даних плагіна, налаштування за замовчуванням та власну директорію даних. WordSec ніколи не змінює .htaccess, .user.ini чи wp-config.php, не змінює права доступу до файлів і не встановлює завантажувач WAF, що передує WordPress, без вашої явної та чітко позначеної дії, а деактивація скасовує кожну таку зміну.

Часті питання

Чи сповільнює WordSec мій сайт?

Ні. WordSec побудований на мінімальній кількості запитів до бази даних, пакетній обробці та розумному кешуванні, тому захист не досягається ціною продуктивності.

Чи потрібен ліцензійний ключ, щоб користуватися WordSec?

Ні. WordSec встановлюється та працює як повністю функціональний безкоштовний плагін із локальним захистом: брандмауер веб-застосунків (ваші власні правила та вбудовані попередньо налаштовані правила), захист від brute-force та захист входу, двофакторна автентифікація, посилення захисту, налаштування геоблокування, журнал аудиту та інше працюють без жодного ключа.

Чи потрібен якийсь зовнішній сервіс?

Ні, для роботи не потрібно. Основний захист WordSec працює локально на вашому сервері, і без ліцензійного ключа він взагалі не звертається до жодного зовнішнього сервісу WordSec.

Чи допоможе WordSec видалити шкідливе ПЗ на зламаному сайті?

Так. Сканер безпеки перевіряє ваші файли, базу даних і заплановані завдання, і будь-яку знахідку можна помістити в карантин одним кліком. Змінений файл ядра WordPress, плагіна чи теми також можна відновити прямо з оригінальної копії на WordPress.org, а історія сканувань зберігає запис про все, що було знайдено та змінено.

Чи має WordSec захист від brute force?

Так. Невдалі спроби входу обмежуються за частотою з прогресивним блокуванням, тому кожна наступна спроба з того самого джерела чекає довше. Також можна додати поле honeypot, перейменувати URL входу, вимагати CAPTCHA у формі входу та обмежити вхід за IP, країною чи часом доби.

Чи підтримує WordSec двофакторну автентифікацію?

Так. Двофакторна автентифікація використовує коди TOTP за RFC 6238 з будь-якого стандартного застосунку-автентифікатора, а ви обираєте, для яких ролей вона обов’язкова. На випадок, коли пристрій втрачено і увійти не може ніхто, константа WORDSEC_DISABLE_2FA у wp-config.php дає аварійний доступ.

Що насправді блокує firewall вебзастосунків?

Вбудовані набори правил охоплюють SQL injection, cross-site scripting, path traversal, а також PHP і command injection. Ви можете додавати власні правила в конструкторі з кількома умовами, запускати firewall у режимі навчання, перш ніж щось блокувати, і за бажанням увімкнути розширений захист, щоб запити перевірялися до завантаження WordPress.

Чи можна використовувати WordSec поряд з іншим плагіном безпеки?

Можна, але не рекомендовано. Два firewall, що перевіряють той самий запит, або два сканери, що обходять ті самі файли, коштують вам продуктивності та дають дубльовані сповіщення. WordSec створено, щоб повністю відповідати за безпеку сайту, тому зазвичай інші плагіни спершу вимикають.

Які мінімальні вимоги?

WordPress 6.9+, PHP 7.4+ та MySQL 5.6+ / MariaDB 10.1+.

Відгуки

26.07.2026
I’ve been using Wordfence, and it has been one of the most reliable security plugins for my WordPress sites. Easy to set up, excellent protection, and regular updates. Highly recommended! Thank you…
23.07.2026
I’ve tried several WordPress security plugins over the years, but WordSec has honestly been one of the best experiences so far. After the recent wp2shell vulnerability was disclosed, I tested my website with and without WordSec installed. During my testing, anonymous REST API access was blocked, preventing my site from being exposed to the same attack surface. I still updated WordPress immediately, but it was reassuring to see WordSec providing an additional layer of protection against emerging threats. Beyond that, I really like the overall feature set. Protection against SQL injection, remote code execution attempts, brute force attacks, malicious file uploads, and XML-RPC abuse gives me confidence that my sites are well protected. The firewall rules work out of the box, and I didn’t have to spend hours configuring everything. Another big advantage is performance. Unlike some security plugins that noticeably slow down WordPress, WordSec is lightweight and has had virtually no impact on my site’s speed. If you’re looking for a modern, lightweight, and reliable WordPress security plugin that focuses on practical protection instead of unnecessary complexity, I highly recommend WordSec. Great work by the developer. Looking forward to future updates!
Прочитати всі 2 відгуки

Учасники та розробники

“WordSec – сканер і видалення шкідливого ПЗ, Firewall вебзастосунків (WAF) та 2FA” — проект з відкритим вихідним кодом. В розвиток плагіну внесли свій вклад наступні учасники:

Учасники

“WordSec – сканер і видалення шкідливого ПЗ, Firewall вебзастосунків (WAF) та 2FA” було перекладено на 7 локалізацій. Дякуємо перекладачам за їх роботу.

Перекладіть “WordSec – сканер і видалення шкідливого ПЗ, Firewall вебзастосунків (WAF) та 2FA” на вашу мову.

Цікавитесь розробкою?

Перегляньте код, перегляньте сховище SVN або підпишіться на журнал розробки за допомогою RSS.

Журнал змін

1.1.1

  • Security: REST API responses no longer honour the ?_jsonp= callback parameter, which let any other site read a response through a script tag. A “Disable JSONP Responses” toggle in Firewall Config covers it and ships on.
  • Fixed: A number of bugs reported since 1.1.0. The login CAPTCHA logged a failed challenge and then let the login through, and its widget did not render for Turnstile and hCaptcha; the setup wizard applied your choices one step early and could lock itself out of the license step; removing an orphaned scheduled task did not always remove it, and tasks owned by an active plugin kept coming back as findings; a file with an ownership mismatch offered delete and quarantine as its only fix; and the “critical issues found” notice stayed on screen after the findings were repaired.
  • Fixed: A site behind a same-server reverse proxy could ban itself, because every visitor arrived as 127.0.0.1. Loopback addresses are never blocked now, at any layer, and rows written before this fix are ignored.
  • Changed: Request rate limiting now ships off by default. A blanket per-IP request cap also catches crawlers and shared office connections, so it is an opt-in like the other options that can turn visitors away.

1.1.0

  • Виправлено: видалення плагіна з вибраним очищенням даних і подальше перевстановлення могли назавжди позбавити користувачів двофакторної автентифікації можливості увійти, бо збережені секрети 2FA переживали видалення, а їхній ключ шифрування ні. Тепер видалення прибирає дані плагіна для кожного користувача разом з ключем, а варіант «зберегти лише ліцензійний ключ» зберігає ключовий матеріал, потрібний збереженій ліцензії.
  • Виправлено: після видалення плагіна залишалися кешовані записи та теки GeoIP і карантину; тепер усе в uploads/wordsec видаляється, якщо не вибрано варіант «зберегти все».

1.0.10

  • Змінено: необов’язкова служба ipwhois.io тепер викликається лише коли ви відкриваєте вікно відомостей про IP у живому трафіку. Журналювання трафіку більше до неї не звертається, тому фонові візити не можуть витратити місячну квоту запитів і залишити у вікні відомостей про IP повідомлення про перевищення ліміту запитів.
  • Змінено: журнал живого трафіку більше не зберігає місто для кожного запиту, а невикористаний стовпець міста вилучено з бази даних. Місто, як і раніше, показується у вікні відомостей про IP.
  • Виправлено: таблиця заблокованих IP-адрес після оновлення сторінки завантажувала 25 рядків, хоча було вибрано 10 на сторінку. Вибір кількості рядків на сторінці, сортування та поточна сторінка тепер запам’ятовуються, як в інших таблицях журналів, а кнопка «Скинути» повертає діапазон часу до значення «Усі».
  • Виправлено: під час сортування таблиці журналу сповіщень або журналу Firewall стрілка стовпця могла вказувати в бік, протилежний фактичному порядку.

1.0.9

  • Виправлено: на сайтах, де WordPress встановлено в підкаталозі, перейменування URL входу не залишало шляху всередину: власна адреса входу повертала 404, а wp-login.php і wp-admin залишалися заблокованими. Тепер власна адреса працює, як і скорочення /login, /admin та /dashboard.
  • Виправлено: параметр «Блокувати доступ до конфіденційних файлів» блокував законні завантаження з медіатеки (.zip, .sql, .log і подібні) при встановленні в підкаталог, бо виняток для теки uploads не збігався. Тепер виняток відповідає реальному розташуванню uploads.
  • Виправлено: пастка Blackhole ніколи не спрацьовувала при встановленні в підкаталог, а запит із рядком запиту проходив повз неї всюди.
  • Виправлено: список дозволених IP-адрес і країн для входу не охоплював перейменовану сторінку входу при встановленні в підкаталог.
  • Виправлено: блокування переліку плагінів і тем не працювало при встановленні в підкаталог, коли запит доходив до PHP.
  • Виправлено: приклади правил для Nginx та IIS, які показуються для серверів, що ігнорують .htaccess, тепер містять шлях встановлення, тому підходять і для встановлення в підкаталог.
  • Виправлено: недопустимий власний слаг сторінки входу мовчки замінювався замість того, щоб бути відхиленим з повідомленням, а на сайті, де слага ще не було, він міг стати передбачуваним значенням за замовчуванням. Тепер значення відхиляється з повідомленням, а попередній слаг зберігається.
  • Виправлено: якщо збережений секрет двофакторної автентифікації більше не вдавалося розшифрувати (наприклад, після ротації ключа безпеки), вхід відхилявся навіть з правильним паролем, і вимкнення двофакторної автентифікації не допомагало. Тепер перемикач 2FA повністю вимикає перевірку, а константа WORDSEC_DISABLE_2FA у wp-config.php дає аварійний доступ.
  • Виправлено: параметр «Приховати помилки входу» більше не замінює повідомлення про помилки двофакторної автентифікації та стану сайту загальним текстом про невірні облікові дані; маскуються лише помилки облікових даних.
  • Покращено: секрети двофакторної автентифікації, збережені в старіших форматах шифрування, тепер у фоновому режимі перешифровуються в поточний формат, тому майбутня ротація ключа безпеки більше не може зробити їх недійсними.

1.0.8

  • Виправлено: посилення прав доступу до файлів могло зробити сайт недоступним. Воно встановлювало кореневому .htaccess режим 0440, який позбавляє вебсервер доступу на читання на панелях хостингу, де вебсервер працює від імені іншого користувача, ніж власник файлу (Plesk, cPanel і подібні). Після цього Apache відповідав на кожен запит кодом 403 і записував у журнал «AH00529 pcfg_openfile: unable to check htaccess file». Тепер кореневому .htaccess встановлюється режим 0644, щоб вебсервер завжди міг його прочитати, а wp-config.php і надалі стає доступним лише для читання з режимом 0440. Уражені сайти виправляються автоматично при наступному відкритті сторінки адміністратора з увімкненим параметром.
  • Виправлено: сканер шкідливого ПЗ рекомендував той самий режим 0440 для кореневого .htaccess, тому «Виправити все» (і заплановані сканування з автоматичним виправленням) могли застосувати його знову. Тепер сканер очікує 0644 і натомість повідомляє про проблему, якщо вебсервер не може прочитати .htaccess.
  • Виправлено: перевірка прав доступу до файлів на сторінці «Інструменти» вказувала 0440 як рекомендований режим для .htaccess, а тепер рекомендує 0644.
  • Виправлено: оцінка безпеки більше не вимагає, щоб файл .htaccess був недоступний для читання вебсерверу; на оцінку впливає лише доступ на запис для групи або для всіх.

1.0.7

  • Виправлено: параметр «Запобігання переліку користувачів» більше не блокує звичайні сторінки авторів. Блокуються лише запити за ідентифікатором (наприклад, /?author=1, який WordPress перетворює на ім’я користувача); відвідувач, що відкриває відомий архів автора виду /author/name/, обслуговується як звичайно. Кінцева точка REST для користувачів і карта сайту користувачів залишаються закритими, як і раніше.
  • Виправлено: у діалозі сканера «Переглянути відповідний вміст» поле із вмістом відображалося білим, поки була активна темна тема.
  • Покращено: сторінка блокування, яка показується заблокованим відвідувачам, містить словесний знак WordSec із рядком «WordPress Security Plugin» під ним.
  • Покращено: екран блокування, який виводить розширений захист (firewall до завантаження WordPress), тепер повністю збігається з тим, який видає WordPress, замість майже такої самої копії з додатковим кодом помилки та рядком посилання.
  • Виправлено: видалення з варіантом «зберегти лише ліцензійний ключ» тепер зберігає й ідентифікатор цього сайту, тому при перевстановленні використовується наявна прив’язка ліцензії, а сайт не реєструється вдруге.

1.0.6

  • Нове: сканер тепер повідомляє про неочікувані зайві файли в папках плагінів і тем, розміщених на WordPress.org (файли, що не є частиною офіційного випуску). Такі файли є поширеним місцем приховування закинутих шкідливих компонентів, які не збігаються з жодною сигнатурою шкідливого коду. Результати підтримують карантин і охоплюються дією «Виправити все».
  • Покращено: відновлення файлів плагінів і тем тепер отримує окремий оригінальний файл безпосередньо з SVN WordPress.org (той самий канал, який уже використовується для відновлення ядра) замість завантаження та розпакування всього zip-архіву плагіна/теми; zip-пакет залишається як автоматичний резервний варіант.
  • Виправлено: відновлення плагінів і тем могло повідомляти «плагін, можливо, не розміщено на WordPress.org» для плагінів, які там ДІЙСНО розміщені, оскільки крок розпакування zip-архіву виконувався без ініціалізованої файлової системи WordPress.
  • Виправлено: стандартні теми, що постачаються разом із WordPress (наприклад, Twenty Twenty-Five), більше не спричиняють хибних результатів «Змінений файл теми». WordPress постачає власні збірки цих тем, які можуть побайтово відрізнятися від випуску тієї самої версії в каталозі тем; файли, що збігаються з офіційними контрольними сумами ядра, тепер розпізнаються як справжні.
  • Покращено: таблиця «Історія сканувань» показує повний розподіл за серйозністю (усього, критичний, високий, середній, низький, інформаційний) при наведенні курсора на стовпець «Знайдені проблеми».

1.0.5

  • Виправлено: сканер шкідливого коду більше не позначає власні незмінені файли WordSec. Файли, що побайтово збігаються з офіційними контрольними сумами випуску WordPress.org для встановленої версії WordSec, виключаються зі зіставлення із сигнатурами; змінений або невідомий файл, як і раніше, не проходить перевірку контрольної суми та сканується звичайним чином.

1.0.4

  • Нове: майстер налаштування. Перша активація тепер відкриває покрокове кероване налаштування: оберіть Рекомендовану, Стандартну або повністю Власну конфігурацію для брандмауера, безпеки входу, блокування та налаштувань, налаштуйте CAPTCHA, двофакторну автентифікацію, перейменування URL-адреси входу та канали доставлення сповіщень і завершіть кроком ліцензії. Кожна зміна, пов’язана з передаванням даних або файлами сервера, розкривається перед її застосуванням, а майстер можна будь-коли запустити повторно з Налаштувань.
  • Нове: вибір того, що станеться з вашими даними при видаленні (зберегти все, зберегти лише ліцензійний ключ або видалити все), тепер пропонується в діалоговому вікні під час деактивації плагіна, на додаток до наявного елемента керування в Налаштуваннях.
  • Покращено: виявлення та продуктивність сканера шкідливого коду.
  • Покращено: візуальні вдосконалення в усьому інтерфейсі адміністратора.
  • Виправлено: відомі проблеми, про які повідомлялося починаючи з версії 1.0.3.

1.0.3

  • WordPress 6.9 тепер є мінімальною підтримуваною версією.
  • Завантажувач WAF, що передує WordPress («Розширений захист»), більше не встановлюється під час активації. Це явна згода на сторінці Брандмауер, яка перелічує кожну зміну сервера, яку він робить, і вимкнення його (або деактивація плагіна) скасовує їх усі.
  • Функції посилення захисту, які записують у .htaccess, .user.ini чи wp-config.php, змінюють права доступу до файлів або видаляють файли, тепер за замовчуванням вимкнені, а опис кожного перемикача точно вказує, що саме він записує.
  • Деактивація тепер відновлює оригінальні константи налагодження wp-config.php та оригінальні права доступу до файлів і видаляє кожен файл та директиву, які додав плагін; видалення повторно запускає це очищення як запобіжний захід.
  • Резервну геолокацію IP та пошук деталей IP у Живому трафіку переведено з ip-api.com на ipwhois.io, завжди через HTTPS з перевіркою сертифіката, і кожен запит тепер обмежено новою, вимкненою за замовчуванням, згодою «Зовнішній сервіс пошуку IP» (Налаштування Обробка IP відвідувачів).
  • Оцінки репутації ланцюга постачання тепер повністю працюють без ліцензійного ключа: публічні дані про плагіни/теми з wordpress.org отримуються безпосередньо, коли дзеркало сервісу недоступне.
  • Діалог деталей IP у Живому трафіку показує локальну статистику запитів (загальні показники, кількість заблокованих, рівень загрози) навіть коли зовнішні пошуки вимкнено.
  • Сторінку Налаштування реорганізовано: Дані використання переміщено вгору, параметри мови та інтерфейсу об’єднано в одну картку «Інтерфейс адміністратора», а розділ «IP відвідувача» перейменовано на «Обробка IP відвідувачів».
  • Описи на сторінці Інструменти тепер називають зовнішні сервіси, до яких звертається кожен інструмент (api.ipify.org, rdap.org та провайдери чорних списків DNS).
  • Розширено документацію щодо зовнішніх сервісів: тепер перелічено провайдерів чорних списків DNS, усі хости завантаження wordpress.org та сервіс ipwhois.io.
  • Виправлено деякі відомі помилки.
  • Внесено візуальні покращення.

1.0.2

  • Усі функції тепер повністю функціональні локально без ліцензійних обмежень.
  • Виправлено помилку в сканері шкідливого коду.
  • Дані часу виконання (правила WAF, чорні списки, GeoIP, карантин) тепер розташовані в папці uploads (uploads/wordsec).
  • Додаткові виправлення розташування файлів/директорій та відповідності настановам wp.org.

1.0.1

  • Вбудовані скрипти/стилі перенесено до WordPress enqueue API.
  • Посилено очищення вхідних даних під час обробки запитів.
  • Оновлено включені бібліотеки: ApexCharts 5.16.0, TCPDF 6.11.3.
  • База даних GeoIP тепер зберігається в wp-content/wordsec-data/ замість папки плагіна.
  • Розширено документацію щодо зовнішніх сервісів у цьому readme.

1.0.0

  • Перший публічний реліз.