Kódaláírások
A végrehajtható Bricks-kód védelme az adatbázisban történő észrevétlen módosítás ellen: mikor kell aláírás, hogyan készül, és mikor kell újragenerálni.
A kódaláírások védik a végrehajtható Bricks-kódot attól, hogy valaki észrevétlenül módosítsa az adatbázisban.
Aláíráskor a Bricks a kódból a WordPress wp_hash() függvényével hash-t készít, és az aláírást a Bricks-adatokkal együtt tárolja. Futtatáskor a Bricks újra kiszámolja a tárolt kód hash-ét, és összeveti a mentett aláírással. Ha nem egyeznek, a Bricks blokkolja a végrehajtást.
Mely helyeken kell aláírás
Szekció neve “Mely helyeken kell aláírás”A következő Bricks-kódhelyek csak érvényes aláírással futhatnak:
- a Kód elem PHP/HTML-je, ha a kódvégrehajtás engedélyezve van
- az SVG elem, ha a Forrás értéke Kód
- a lekérdezési ciklus szerkesztőjének kódja
- komponens lekérdezési tulajdonságok
- globális lekérdezések rekordjai
A Kód elem közvetlen CSS- és JavaScript-részét a Bricks CSS/JS kimenetként adja ki, amikor a Kód elem lefut. Az aláírási kapu a végrehajtható PHP/HTML-mezőre és a fenti többi végrehajtható helyre vonatkozik.
Szükséges jogosultságok
Szekció neve “Szükséges jogosultságok”A kódaláírások a kódvégrehajtás biztonsági modelljéhez kötődnek:
- A kódvégrehajtást engedélyezni kell a Bricks → Beállítások → Egyéni kód lapon.
- A felhasználónak rendelkeznie kell a Bricks Kód végrehajtása jogosultságával.
- A kézi aláírás a szerkesztőben rendszergazdai szintű művelet. A globális újragenerálás a WordPress
manage_optionsjogosultságát igényli. - Ha a
BRICKS_LOCK_CODE_SIGNATURESállandó értéketrue, a Bricks a jogosultságoktól függetlenül nem enged új aláírást. - A veszélyes automatikus szerkesztői aláírás külön, tudatos bekapcsolást igényel, és normál éles webhelyen nem ajánlott. Ehhez is kell az engedélyezett kódvégrehajtás, a Kód végrehajtása jogosultság és a feloldott kódaláírás.
Ha az Aláírás művelet nem hoz létre vagy nem frissít aláírást, ellenőrizd, hogy a kódvégrehajtás engedélyezve van-e, a felhasználónak megvan-e a Kód végrehajtása jogosultsága, rendszergazdai szintű-e a hozzáférése, és nincs-e zárolva a kódaláírás.
AI-kliensek csak akkor tárolhatnak és írhatnak alá PHP-kódot a támogatott Kód mezőkben, ha a PHP-képességeket a BRICKS_ENABLE_PHP_ABILITIES állandóval kifejezetten engedélyezted. A csatlakoztatott felhasználónak alkalmazásjelszót kell használnia, és rendelkeznie kell a manage_options jogosultsággal és a Bricks Kód végrehajtása jogosultságával. A kódvégrehajtás és az aláírászár ellenőrzései ilyenkor is érvényesek. Részletek: AI-képességek és készségek.
Hogyan készíts kódaláírást
Szekció neve “Hogyan készíts kódaláírást”Aláírást készíthetsz egyedi elemhez a szerkesztőben, megnézheted az aktuális oldal aláíratlan kódját, vagy a Bricks beállításaiban az egész webhelyre újragenerálhatod az aláírásokat.
Aláírás a szerkesztőben
Szekció neve “Aláírás a szerkesztőben”A szerkesztőben a végrehajtható, aláíratlan kódú elemek pirossal vannak kiemelve. A szerkezet panel tetején piros ujjlenyomat ikon is megjelenik.
Aláírás egy elemhez
Szekció neve “Aláírás egy elemhez”Ha egy elemet szerkesztve szeretnél aláírást készíteni, kattints a kódszerkesztő feletti Kód aláírása gombra. Ha a kurzor a kódszerkesztőben áll, a CMD/CTRL + R is használható. A művelet csak akkor érhető el, ha a szükséges jogosultságok teljesülnek.
Az aláírás után mentsd az oldalt, hogy a módosított kód és az aláírás együtt kerüljön tárolásra.
Az aláíratlan kód megtekintése és tömeges aláírása
Szekció neve “Az aláíratlan kód megtekintése és tömeges aláírása”Az aktuális oldal összes aláíratlan kódú elemét a szerkezet panel tetején lévő ujjlenyomat ikonnal nézheted meg és írhatod alá. Ugyanez az ikon az aláíratlan elemeknél a szerkezet panelen is elérhető.
Az egész webhely aláírása a Bricks beállításaiból
Szekció neve “Az egész webhely aláírása a Bricks beállításaiból”Nyisd meg a Bricks → Beállítások → Egyéni kód lapot, és a Kódaláírások csoportban kattints a Kódaláírások újragenerálása gombra. Ez aláírást készít a Bricks-szel épített összes oldalhoz, sablonhoz, globális elemhez, komponens elemfához, komponens lekérdezési tulajdonsághoz és globális lekérdezési rekordhoz.
A művelethez nonce-szal ellenőrzött rendszergazdai kérés, manage_options, kódvégrehajtási jogosultság és feloldott kódaláírás kell. Ha a CSS-fájlok betöltése be van kapcsolva, a sikeres globális újragenerálás után a Bricks újragenerálja a CSS-fájlokat is.
Az újragenerálás előtt érdemes lefuttatni a Kódellenőrzést, és mentést készíteni.
A kódaláírás generálásának zárolása
Szekció neve “A kódaláírás generálásának zárolása”Magas biztonságú környezetekhez a BRICKS_LOCK_CODE_SIGNATURES állandó még egy védelmi szintet ad.
Ha az állandó értéke true, a Bricks a felhasználói jogosultságoktól függetlenül megakadályozza új kódaláírások létrehozását. A zárat az aláírás előtt kell definiálni:
if ( ! defined( 'BRICKS_LOCK_CODE_SIGNATURES' ) ) { define( 'BRICKS_LOCK_CODE_SIGNATURES', true );}Ha az állandó be van állítva, minden új aláírás kísérlete „Code signatures are locked” (a kódaláírások zárolva vannak) hibával tér vissza.
Mikor kell újragenerálni az aláírásokat
Szekció neve “Mikor kell újragenerálni az aláírásokat”- A WordPress sók vagy titkos kulcsok megváltoztatása után: ha a
wp-config.phpsói megváltoznak, a meglévő Bricks-kódaláírások érvénytelenné válnak. - Webhelyköltöztetés után: ha a webhelyet új domainre vagy szerverre viszed, generáld újra az aláírásokat, ha az új környezetben más WordPress sók vannak.
- Aláírt kód szerkesztése után: a végrehajtható Bricks-kód módosítása megváltoztatja az aláírt tartalmat. Nézd át és írd alá a frissített kódot, mielőtt azt várnád, hogy lefut.
Miért kellenek kódaláírások
Szekció neve “Miért kellenek kódaláírások”A kódaláírások korlátozzák, mire képes egy támadó pusztán adatbázis-hozzáféréssel.
Ha valaki szerkeszteni tudja a Bricks-adatokat az adatbázisban, de aláírást nem tud generálni, rosszindulatú kódot tehet be, de a Bricks nem hajtja végre, mert az aláírás hiányzik vagy érvénytelen.
A WordPress sók
Szekció neve “A WordPress sók”A WordPress sók a wp-config.php fájlban tárolt titkos értékek. A Bricks a WordPress hash-rendszerét használja, ami ezektől a sóktól függ, ezért az egyik környezetben készült aláírás nem biztos, hogy egyezik egy másik, más sóval működő környezetben.
Ha a sók megváltoznak, a Bricks-nek újra kell generálnia az aláírásokat a jelenlegi, megbízható kódból.
A kódintegritás ellenőrzésének menete
Szekció neve “A kódintegritás ellenőrzésének menete”- Kód- és aláírásgenerálás: a kód aláírásakor a Bricks eltárolja a kódból készített hash-t.
- A kód lekérése végrehajtáshoz: a kód betöltésekor a Bricks lekéri a tárolt kódot és aláírást.
- Ellenőrzés: a Bricks újra kiszámolja a lekért kód hash-ét, és összeveti a tárolt aláírással.
- Végrehajtási döntés: ha a hash-ek egyeznek, a kód továbbmehet a végrehajtási folyamatban. A hiányzó vagy eltérő aláírás blokkolja a végrehajtást, és „No signature” vagy „Invalid signature” hibát ad.
Miért rossz ötlet rendszeresen cserélni a WordPress sókat
Szekció neve “Miért rossz ötlet rendszeresen cserélni a WordPress sókat”Ha megváltoztatod a wp-config.php sóit, az összes meglévő Bricks-kódaláírás érvénytelen lesz. Az aláírt kód újbóli futtatásához kézzel kell újragenerálnod őket a Bricks → Beállítások → Egyéni kód lap Kódaláírások csoportjában.
Egyes bővítmények automatikus sócserét kínálnak azzal az érvvel, hogy nehezebbé teszi a jelszavak feltörését. Ez nem igaz: a WordPress sók nem a felhasználói jelszavak hash-eléséhez kellenek. A sócsere nem ad plusz védelmet a jelszólopás vagy a nyers erejű támadás ellen.
A sócsere viszont ezeket okozza:
- kijelentkezteti az összes felhasználót, mert érvényteleníti a hitelesítési sütiket;
- elrontja a nonce-okat, ami megzavarhatja az űrlapbeküldést és az AJAX-kéréseket;
- tönkreteheti azokat a bővítményeket, amelyek a sókat titkosításra vagy adatintegritásra használják;
- érvényteleníti az összes Bricks-kódaláírást.
Ha a webhelyet nem törték fel, általában nincs gyakorlati ok a sók cseréjére, csak felesleges hibákat és instabilitást okoz.
Miért nem írja alá a Bricks automatikusan a kódot
Szekció neve “Miért nem írja alá a Bricks automatikusan a kódot”A Bricks kézi aláírást kér, hogy az adatbázis megsértése ne vezethessen teljes kódvégrehajtáshoz.
Ha valaki hozzáfér az adatbázishoz, például egy másik bővítmény sebezhetősége vagy kompromittált hozzáférés miatt, kódvégrehajtási jogosultság nélkül is beírhat rosszindulatú kódot a Bricks-adatokba. Ez súlyos, de nem jelenti automatikusan, hogy PHP-t futtathat a szerveren.
Mivel a Bricks a webhely WordPress sóihoz kötött aláírásokat használ, a támadó pusztán adatbázis-hozzáféréssel nem teheti végrehajthatóvá a kódot. A beszúrt kód aláíratlan marad, és a Bricks blokkolja.
Ha a Bricks alapból aláírná a kódot, amikor egy jogosult felhasználó megnyitja a szerkesztőt, ez a védelem megszűnne: a támadó beültethetne rosszindulatú kódot, és megvárhatná, hogy egy jogosult felhasználó betöltse a szerkesztőt. A kézi aláírás kikényszerít egy ellenőrző pontot, mielőtt a kód végrehajtható lenne.
Veszélyes automatikus aláírás állandói
Szekció neve “Veszélyes automatikus aláírás állandói”A Bricks két, tudatosan bekapcsolható állandót tartalmaz olyan szabályozott szerkesztői munkafolyamatokhoz, ahol vállalod az automatikus aláírás kockázatát.
Alapból ki vannak kapcsolva. Logikai true értékként add meg őket, ne 'true' szövegként.
| Állandó | Mit ír alá |
|---|---|
BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_SAVE |
A szerkesztői mentési kérésben szereplő jogosult végrehajtható kódot: oldal- vagy sablonelemeket, globális elemeket, komponens elemfákat, komponens lekérdezési tulajdonságokat és globális lekérdezési rekordokat. |
BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_RERENDER |
A szerkesztői előnézeti és újrarenderelési kérésekben szereplő jogosult végrehajtható kódot. A Bricks visszaadja a generált aláírás-metaadatot a szerkesztőnek, hogy frissítse a memóriabeli elemadatot. Egy későbbi szerkesztői mentés tárolja tartósan a frissített adatot. |
Példa:
if ( ! defined( 'BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_SAVE' ) ) { define( 'BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_SAVE', true );}if ( ! defined( 'BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_RERENDER' ) ) { define( 'BRICKS_DANGEROUSLY_AUTO_SIGN_CODE_ON_BUILDER_RERENDER', true );}Egyik állandó sem kerüli meg a kódvégrehajtási jogosultságokat és a BRICKS_LOCK_CODE_SIGNATURES zárat. Ha a kódvégrehajtás ki van kapcsolva, az aktuális felhasználó nem hajthat végre kódot, vagy a kódaláírások zárolva vannak, a Bricks nem generál automatikusan aláírást.
Készült: