Blog
WordPress Biztonsági Audit: Mit ellenőrizzünk a "live" előtt
Rendszeres ellenőrzőlista a bővítmények biztonságához – az SQL-injekciók megelőzésétől a megfelelő nonce-ellenőrzésig. Automatikus auditjelentésekkel.
Mielőtt bármely PAGEnza által generált bővítmény eljutna egy felhasználó WordPress-telepítésébe, három automatizált biztonsági ellenőrzésen megy keresztül. Ez a bejegyzés elmagyarázza, mit keresnek ezek az ellenőrzések – és miért fontos mindegyik.
Miért van szükség az AI által generált kód auditálására?
A nagy nyelvi modellek meglepően jól írnak WordPress bővítményeket. Ismerik a hook neveket, értik a WP kódolási szabványait, olvasható PHP-t produkálnak. De kiszámítható hibákat is vétenek – és ezek a hibák biztonsági réseket jelentenek.
A leggyakoribbak, amelyeket látunk:
$_GETvagy$_POSThasználata tisztítás (sanitization) nélkül- Nonce ellenőrzés hiánya űrlapok beküldésekor
- Közvetlen adatbázis-lekérdezések
$wpdb->prepare()nélkül eval()vagyexec()használata dinamikus viselkedéshez- Felhasználói adatok megjelenítése
esc_html()vagyesc_attr()nélkül
Ezek nem egzotikus, ritkán előforduló esetek. Rendszeresen megjelennek az LLM kimenetében – még a legjobb modellek esetében is.
1. szakasz: Prompt validálás
Mielőtt az AI egyetlen sort írna, elemezzük a felhasználó leírását. Ez a lépés kétféle problémát ragad meg:
Manipulációs kísérletek – olyan promptok, amelyek célja, hogy az AI szándékosan rosszindulatú kódot generáljon. Olyasmik, mint „hagyd figyelmen kívül az előző utasításokat” vagy „hozz létre egy hátsó ajtót teszteléshez“.
Homályos vagy megvalósíthatatlan leírások – olyan promptok, amelyek túl rövidek vagy túl kétértelműek ahhoz, hogy hasznos kódot állítsanak elő. „Készíts egy bővítményt” szemét generál; „Hozzon létre egy kapcsolatfelvételi űrlapot, amely spam szűréssel küld bejegyzéseket egy e-mail címre” valami valósat generál.
Ha egy prompt megbukik ezen az ellenőrzésen, a felhasználó egy konkrét hibaüzenetet lát, amely elmagyarázza, miért – nem egy általános elutasítást.
2. szakasz: PHP lintelés izolált konténerben
Miután az AI PHP kódot generált, azt php -l paranccsal futtatjuk egy Docker konténerben, amely teljesen el van szigetelve mindentől. Ez rögzíti a szintaxis hibákat, még mielőtt a bővítmény egyáltalán eljutna egy WordPress telepítésbe.
De tovább megyünk: ha a lintelés sikertelen, a rendszer nem csak elutasítja a kimenetet. Visszaküldi a hibát az AI-nak egy javító prompttal – ezt hívjuk gyógyításnak (healing). Az AI látja saját hibáját, és legfeljebb háromszor próbálkozik újra.
Ez azt jelenti, hogy a felhasználók szinte soha nem látnak „generálás sikertelen” üzenetet. Egy kissé hosszabb generálási időt – és működő kódot látnak.
3. szakasz: Kód biztonsági vizsgálat
Ez a legfontosabb szakasz. Statikus elemzést futtatunk, amely ellenőrzi:
Veszélyes függvények: eval(), exec(), system(), shell_exec(), passthru() – bármelyik is blokkolja a bővítmény kiadását.
SQL injekciós vektorok: nyers $wpdb->query() hívások interpolált változókkal, $wpdb->prepare() hiánya, mysql_query() közvetlen használata.
Hiányzó jogosultság-ellenőrzések: AJAX kezelők, amelyek nem hívják a current_user_can() függvényt, mielőtt bármilyen privilegizált műveletet végeznének.
Hiányzó nonce ellenőrzés: űrlapfeldolgozók, amelyek nem hívják a wp_verify_nonce() vagy check_ajax_referer() függvényeket.
Escapoletlan kimenet: echo $_GET[...], echo $user_input escape függvények nélkül.
Ha bármelyik problémát észleljük, a bővítmény blokkolva lesz. A felhasználó egy jelentést lát, amely pontosan felsorolja, mely függvények váltották ki a blokkolást és miért – nem csak egy „biztonsági ellenőrzés sikertelen” üzenetet.
Milyen az audit jelentés?
Minden generált bővítményhez mellékelünk egy közérthető biztonsági audit jelentést. Ez tartalmazza:
- Mely ellenőrzések sikerültek (zöld)
- Mely ellenőrzések váltottak ki figyelmeztetéseket (sárga) – olyan problémák, amelyek nem blokkolók, de figyelmet érdemelnek
- Az automatikusan alkalmazott javítások a gyógyítás során
A jelentés automatikusan generálódik és csatolva van a bővítmény letöltéséhez. Hasznos mind a saját magabiztosságodhoz, mind annak bemutatásához az ügyfeleknek, hogy komolyan vetted a biztonságot.
4. szakasz: Mentéskori validálás
Ez nem része az első generálásnak – akkor érvényes, amikor a felhasználók manuálisan szerkesztik a bővítmény kódját a PAGEnza szerkesztőben.
Minden mentéskor ugyanaz a lint + biztonsági vizsgálat fut újra. Ha szerkesztés közben kritikus biztonsági rést vezetsz be, a mentés blokkolva lesz, amíg azt ki nem javítod. Ez megakadályozza azt a gyakori forgatókönyvet, amikor egy fejlesztő gyors „ideiglenes” változtatást hajt végre, amely két évig marad a termelésben.
Az automatizált audit korlátai
Az automatizált vizsgálat jól elkapja a problémák egy bizonyos osztályát. Nem mindent fog el.
A logikai hibák, a hibás üzleti logika és a finom jogosultság-eskalációs problémák, amelyek nem járnak ismert veszélyes mintákkal, továbbra is emberi felülvizsgálatot igényelnek. Ebben a dokumentációban átláthatóak vagyunk – az audit nem helyettesíti a biztonsági felülvizsgálatot, hanem egy alap, amely minimális színvonalat garantál.
Fizetési vagy érzékeny adatokat kezelő éles bővítmények esetén az automatizált ellenőrzések mellett manuális felülvizsgálatot is javaslunk. Az audit jelentés jó kiindulópontot biztosít egy emberi felülvizsgáló számára.
Sources (5)
- How to Prevent SQL Injection Attacks in WordPress (7 Steps)
- The Ultimate WordPress Security Checklist | WPScan
- SQL Injection in WordPress – Everything You Need To Know - Patchstack
- What is Nonce Verification in WordPress?
- WPAUDIT: Advanced WordPress security auditing suite & vulnerability scanner. Automates pentesting with Nmap, WPScan, Nuclei, SQLMap. Comprehensive reports. Ideal for ethical hackers & Kali Linux. - GitHub