Szűrés az xss támadások megakadályozására,

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 tettem), de a creokodert. a fórumon Yii. sprpavedlivo teljesen észre, hogy nem ezért újra feltalálni a kereket, minden már készen van, csak meg kell RTFM! A CHtmlPurifier nevű osztályról volt szó, amely a HTML tisztítókönyvtár könyvtára. és elvégzi az összes szükséges funkciókat 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.

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 "accessControl" egy vezérlővezérlőként végrehajtott szűrő, és az "application.filters.XssFilter" egy különálló osztályként végrehajtott szűrő, amelyet a / protected / filters / könyvtárban tárolnak. "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!

Mi megoldjuk a problémáidat!

Kapcsolódó cikkek