Перейти до основного вмісту

Меню команд

Перейдіть на сторінку або пошукайте в каталозі

ШІ-інструменти та скрипти

Перевірка безпеки плагінів WordPress

Перевіряйте плагіни й теми WordPress перед випуском: запити $wpdb, зібрані з $_GET, обробники AJAX і admin-post без nonce чи перевірки прав, відкриті маршрути REST, неекранований вивід, unserialize даних запиту та проблеми з readme.txt.

$5.00

Що ви отримаєте: 1 файл · 62.78 KB · ZIP

Переглянути варіанти купівлі

Опис товару

Один обробник wp_ajax_, що зберігає налаштування без check_ajax_referer(), дає змогу іншому сайту змусити залогіненого адміністратора їх змінити, а якщо бракує current_user_can(), викликати його може будь-який передплатник. register_rest_route() із DELETE і без permission_callback відкритий для всього інтернету, а "WHERE id = " . $_GET['id'] у запиті $wpdb є SQL-ін'єкцією навіть після sanitize_text_field(). Саме ці помилки стоять за більшістю безпекових повідомлень про вразливості плагінів. Цей навик знаходить їх та інші помилки плагінів WordPress, наведені нижче, ще до випуску чи подання на WordPress.org і підказує, як виправити кожну з них.

Ваш агент запускає сканер для теки плагіна або теми: усіх файлів .php і readme.txt плагіна. Він відстежує дані запиту ($_GET, $_POST, $_REQUEST, $_COOKIE, $_FILES, заголовки запиту, filter_input(), параметри запиту REST) через присвоєння, цикли foreach, тернарні оператори, wp_unslash() і складання рядків усередині кожної функції та знає, які функції WordPress очищують (sanitize_text_field, absint, sanitize_key), екранують (esc_html, esc_attr, esc_url, wp_kses_post) або готують (заповнювачі $wpdb->prepare) значення. Він зіставляє хуки add_action(), сторінки адмінки та маршрути REST з їхніми обробниками за іменем у всіх файлах, включно із завантажувачем хуків шаблонного плагіна (boilerplate) і допоміжними функціями для nonce чи прав, які викликає обробник. Приклади з посібника для розробників плагінів (AJAX із check_ajax_referer, сторінка налаштувань, кінцеві точки REST з __return_true на маршрутах GET, контролер REST) не позначаються як BLOCK. Він ніколи не запускає PHP чи WordPress. Результат: BLOCK, REVIEW або NOT FLAGGED із файлом, рядком, причиною та безпечнішим підходом. Секрети в показаних рядках ніколи не виводяться.

Що перевіряється

BLOCK (виправте перед випуском)

  • W01: запити $wpdb (query, get_results, get_row, get_var, get_col або рядок запиту, переданий у prepare), зібрані з даних запиту, які не було приведено до числа чи передано як заповнювач
  • W02: маршрути REST із методами POST, PUT, PATCH або DELETE без permission_callback (якщо callback сам перевіряє current_user_can(), це W12)
  • W03: обробники wp_ajax_, admin_post_, сторінок адмінки та admin_init, які змінюють дані за запитом без перевірки nonce, включно з ігноруванням результату wp_verify_nonce() і перевірками, що виконуються лише за наявності цього поля nonce (обробники, зареєстровані також для wp_ajax_nopriv_, публічні за задумом і залишаються для W11)
  • W04: дані запиту, виведені через echo, print, короткі теги echo, printf, _e або wp_die без екранування, включно з $_SERVER['PHP_SELF'], REQUEST_URI і заголовками запиту
  • W05: дані запиту в unserialize(), maybe_unserialize(), extract(), include чи require, eval(), call_user_func(), імені змінної функції або команді оболонки
  • W06: назви опцій і ключі метаданих користувача, взяті із запиту (update_option, delete_option, update_user_meta та подібні), або весь масив $_POST, переданий у wp_update_user()

REVIEW (перевірте перед релізом)

  • W11: обробники, що змінюють дані без current_user_can() (wp_ajax_ і admin_post_ для будь-якого залогіненого користувача; wp_ajax_nopriv_, admin_init та init для налаштувань, користувачів, плагінів і файлів), включно з використанням is_admin() як перевірки прав
  • W12: маршрути GET без permission_callback, маршрути запису, у яких permission_callback дорівнює __return_true, завжди повертає true або є is_user_logged_in, а також маршрути запису без нього, callback яких сам перевіряє current_user_can()
  • W13: дані запиту, збережені через update_option, update_post_meta, update_user_meta або set_theme_mod без функції очищення, та register_setting() без sanitize_callback
  • W14: неекранований вивід get_option, get_post_meta, get_user_meta, get_theme_mod, get_transient, add_query_arg(), remove_query_arg(), get_query_var(), параметрів REST і даних запиту, які було лише очищено
  • W15: запити $wpdb, складені з параметрів REST або з даних запиту, екранованих через esc_sql()/esc_like(), замість prepare()
  • W16: файлові виклики (unlink, readfile, file_get_contents, fopen, file_put_contents, copy, rename, $wp_filesystem) зі шляхами із запиту, move_uploaded_file() без перевірки типу файлу та wp_handle_upload() з 'test_type' => false
  • W17: вимкнені перевірки TLS: 'sslverify' => false, вимкнені CURLOPT_SSL_VERIFYPEER або CURLOPT_SSL_VERIFYHOST, 'verify_peer' => false, фільтр https_ssl_verify, що повертає false (loopback-запити до самого сайту не повідомляються)
  • W18: PHP-файли плагіна, що виконують код до будь-якої перевірки ABSPATH, та uninstall.php без перевірки WP_UNINSTALL_PLUGIN (захисти на кшталт if ( ! defined( 'ABSPATH' ) ) { header( ... ); exit; } і перевірка ! function_exists( 'add_action' ) з Akismet зараховуються)
  • W19: проблеми із заголовком readme.txt: немає рядка === Plugin Name ===, бракує Contributors, Tested up to, Stable tag або License, Stable tag: trunk, Stable tag, що відрізняється від Version в основному файлі плагіна, Tested up to старіша за три останні мажорні релізи WordPress, понад 5 тегів, короткий опис довший за 150 символів, стандартний текст шаблону

Що входить до комплекту

  • Сканер (Python 3.9+, лише стандартна бібліотека)
  • Посібник із правил із причиною, безпечнішим підходом і офіційним джерелом WordPress або PHP для кожного правила
  • Ризикований і безпечний приклади плагіна (основний файл, обробники AJAX і REST, readme.txt), а також справжній звіт, який сканер видає для ризикованого прикладу

Обмеження

Він читає кожен файл у тому вигляді, як його написано. Дані запиту відстежуються в межах однієї функції; значення, передані між функціями, збережені іншим методом у властивостях класу чи пропущені через фільтри, не відстежуються, а вивід невідомих йому функцій вважається безпечним. Хуки з іменами чи callback-функціями, що формуються під час виконання, а також перевірки nonce чи прав, віддалені від обробника більш ніж на один виклик, не помічаються. JavaScript, block.json, теки vendor і tests не читаються. Від файлів, які лише визначають класи чи функції, захист ABSPATH не вимагається (Plugin Check тут суворіший), а файли тем на нього не перевіряються. Tested up to порівнюється з датованою межею: 6.9, найстаріший із трьох останніх мажорних релізів станом на листопад 2026 року. NOT FLAGGED не є гарантією.

Вміст

Один ZIP-файл із 17 файлами: SKILL.md, сканер у scripts/ (8 файлів Python), references/rules.md (кожне правило з причиною та безпечнішим підходом) і examples/ (6 файлів-прикладів плюс report.md, справжній вивід сканера для ризикованого прикладу).

Як користуватися: Це навик для агента: тека з файлом SKILL.md і скриптами Python, які може запускати агент для програмування зі штучним інтелектом, наприклад Claude Code, Cursor або Codex CLI. Розпакуйте її в теку навичок вашого агента (для Claude Code: ~/.claude/skills/), а потім попросіть агента перевірити ваш проєкт. Скрипти також працюють самостійно з Python 3.9 або новішим, нічого не потрібно встановлювати. Вони лише читають ваші файли: без доступу до мережі, і нічого нікуди не надсилається.

Що ви отримаєте

1 файл · 62.78 KB

  • wordpress-plugin-safety-check-1.0.0.zipZIP · 62.78 KB
ЛіцензіяКомерційне використання дозволено
Перевірка пакетаПройдено

Getly відкрив завантажені файли й не знайшов нічого, що завадило б їх відкрити. Це не антивірусна перевірка і не оцінка якості.

Опубліковано12 лист. 2026 р.
Розмір файлу62.78 KB
Формат файлуZIP
Версіяv1.0

Теги

wordpressphppluginssecuritywordpress-orgai agent skill
R
RR HH

Поширені запитання

Чи отримаю я доступ одразу?

Так. Це цифровий товар: ви можете завантажити його одразу після оплати, просто зі своєї бібліотеки.

Чи можна використовувати його в комерційних проєктах?

Так. Комерційне використання дозволено: користуйтеся в особистому бізнесі та в тому, що продаєте. Ви не можете перепродавати чи поширювати сам файл.

Яка у вас політика повернення коштів?

Ви можете запросити повернення коштів протягом 30 дн. Якщо щось не так, подайте запит зі свого замовлення, і команда Getly його розгляне.

Які формати та розміри файлів я отримаю?

Ви завантажите 1 файл - ZIP - загалом 62.78 KB.

Чи отримую я безкоштовні оновлення?

Так: коли продавець випускає нову версію, ви можете повторно завантажити свіжі файли зі своєї бібліотеки безкоштовно. Останні оновлення дивіться в журналі змін.

Ціна

$5.00