Yii, írunk egy szűrőt, hogy megakadályozzuk xss támadások, allframeworks - egy napló webfejlesztés
Kezdjük egy kis kitéréssel.
És mégis helyesen mondják, és képes arra, hogy bizonyos fórum (főleg UNIX-ovyh) közvetlenül sikoly - RTFM! Ki nem értette, hogy mi az oem - a RTFM a fordítást jelenti: "olvassa el ezt a rohadt dokumentációt!". Ez minden, amit én tényleg itt a mi: tanuló és valami próbál írni a keretet, Yii, a probléma merült fel, bemeneti szűrés a különböző „rosszindulatú” karakter (ala az XSS-támadás), és az első dolog, ami eszébe jutott -, hogy írjon egy szűrőt (hogy még mindig volt), de creocoder, Yii online, teljesen sprpavedlivo észre, hogy nem ezért újra feltalálni a kereket, minden már készen van, csak meg kell RTFM! Ez volt körülbelül CHtmlPurifier osztály, amely a wrapper a HTML légtisztító könyvtár és ellátja mindazokat a funkciókat, amelyek szükségesek nekem (bár én nem poprobyval ez a fellépés, lehet és természetesen nem). De mivel elkezdtem saját szűrőt írni - úgy döntöttem, hogy mindent befejezettem, és csak írtam egy cikket a szűrőkről a Yii-ben.
És így van!
A szűrők olyan kódrészletek, amelyeket a vezérlő művelet végrehajtása előtt és / vagy után lehet végrehajtani. Szükség esetén a szűrők megakadályozhatják a kért művelet végrehajtását.
A szűrők lehetnek mind az aktuális vezérlő, mind az egyes osztályok - amelyek lehetővé teszik számukra az újrafelhasználást. Ha a szűrőt klasszikus módszerként alkalmazzák, akkor a "szűrő" előtagnak kell lennie.
A különálló osztályként végrehajtott szűrőnek a CFilter osztály örököse kell.
A szűrők aktiválásához a vezérlőnek felül kell hatalmaznia a szűrőmódszert, amely a vezérlő összes szűrőjét (vagy egyedi műveleteit) visszaadja.
Ebben a példában, „a hozzáférési jogosultság ellenőrzése” - szűrő-szabályozó végre, mint módszer, és a „application.filters.XssFilter” - szűrő valósíthatók meg külön osztály, amely tárolja a / védett / szűrők /. "tiszta" - állítsa be a szűrő tulajdonságát.
Ez volt egy rövid hivatkozás a Yii szűrőkre vonatkozóan, további részletek itt olvashatók.
Most azonnal elkezdjük végrehajtani a szűrőt. Az adat-tisztítási funkció, amely elvégzi az összes munkát - a Kohana keretrendszerből vettem. Nos, ez elég szó, magam hozom magam a szűrőkódot - ez elég egyszerű, ezért nem hiszem, hogy bármilyen gondot kellene okoznia.
Teljesen teszteltem ezt a szűrőt - első pillantásra - működik!
Szeretném megemlíteni észrevételeimet a szűrők megvalósításában Yii ...
Azt hiszem, ez hasznos volt, hogy van egy módszer, az úgynevezett végrehajtása előtt az előszűrő és Postfilter, például init () - amely inicializálja a szűrő, ezért kell állnia paraméterek peredavemye a szűrőt a vezérlő (emiatt lehetetlen használni a __construct). Természetesen kiterjesztheti a CFilter-et ezekre a célokra, de a legjobb megoldás a "natív" lehetőség.
Remélem, ez az anyag hasznos lesz!