Érvényesítési szabály - biztonságos, azok számára, akik a tartályban

belépés

Vkratse. Érvényesítési szabályok két célt szolgál:
  1. Biztosítani kell, hogy a benyújtott adatok a forma, helyesen adta meg.
  2. Határozza meg, mely területeken lehet rendelni a változó $ modellt.
Ezek a kapcsolódó, de ez nem ugyanaz.

Vessen egy pillantást egy sor érvényesítési szabályok

Mielőtt elkezded, megmutatjuk az általános szabályok hitelesítési adatok modell szerint. A példánk veszünk bemutató blog. Modell «Felhasználó» található a védett / modellek / user.php.

Hitelesítési szabályok határozzák meg az array tömb (.). Ez tartalmaz egy listát az attribútumok, a neve az érvényesítő, valamint további szükséges paraméterek különböző érvényesítő. Azt is tartalmazza a kulcsszó «on», jelezve az érvényesítési forgatókönyvet, de nem fogjuk leírni a cikkben.

érvényesítési szabályok

A fő cél az érvényesítő, hogy megbizonyosodjon arról, hogy a felhasználók továbbítják formájában helyes adatokat.

Ha a mező értéke legyen kevesebb, mint 16 karakter, ha az értéknek egyedinek kell lennie, vagy ha az érték kell, hogy legyen egy érvényes e-mail, Yii egy gazdag érvényesítő felhasználói adatokat.

Ön is létrehozhat saját érvényesítő, mint akár egy osztály műveleteit vagy önálló kiterjesztése. De ez túlmutat ezt a cikket.

tömegének hozzárendeléséhez

Miután elvégezte készíteni az ellenőrzési szabályokat, eljött az ideje, hogy a rendelkezésre álló adatokat a felhasználó. Ez akkor fordul elő, míg az űrlap elküldése hívja a vezérlő tevékenységének.

Ez a tevékenység kód frissítés kontrolea utáni (r = utáni / frissítés?):

$ Model-> attribútumok = $ _POST [ 'Posta'] megtévesztően egyszerű design, nepravdali?
Tény, hogy a módszer az úgynevezett

Mivel a $ _POST [ „Posta”] valójában egy tömb, amely képviseli az összes mezőt egyszerre, Yii fut minden mezőt egyenként. Minden mező van rendelve a megfelelő attribútuma a modellben (ellenőrzés után, természetesen), ami menthető, vagy frissített, vagy bármilyen más.

Mass megbízás valóban úgy néz ki, mint ez:

Massive megbízás nagyon fontos - a Yii alkalmazás nem fog működni nélküle.

Miért tömeges hozzárendelés néha nem működik?

Ahogy «nyilvánvaló» mint a Massive hozzárendelés, ez rendkívül gyakori a felhasználók megtalálják, hogy a $ modell változók nem -> save () miatt hiányzó mező értékeket. Vagy a érvényesítés hiányában azonnal, vagy mező értékeket nem másolt formában a $ modellt.
Azáltal sozhyleniyu nem lehet lefordítani ezt a kifejezést.

A lényeg - masszív megbízás kerül sor csak a mezők, amelyek érvényesítési szabályok világosak. Explicit szabályok - hossz, e-mail, szükséges stb - az összes szabványos. De néhány szabad formájú mezők kitöltése nem kötelező, és nem formai követelményeknek - a felhasználó adja át semmit, többek között akkor hagyja üresen a mezőt.

Egyes területeken nem kell ellenőrizni, nem igaz?

Rossz: csak egyértelmű megjelölése értékmező modell korlátait vozmozhnochti rossz fiúk próbálják elrontani a modellt.

Attribútumok nem jelennek meg semmilyen szabályt csekk nem másolja át a modell tömeges hozzárendelés.
Ha az attribútum nincs megadva érvényesítő adatokat, azt kell mondanunk, azt akarjuk, hogy a Yii attribútum megtöltött tömeges megbízásokat. Ez keresztül történik egy érvényesítő «biztonságos».

Tehát mi a helyzet?

Miért ez a szabály «biztonságos» vmese szükséges tulajdonságokat? Ez egy nagyon gyakori kérdés.

A végén, ha a fejlesztő beállítja formák konkrét területeken, akkor nem lehet egyszerűen átmásolni a $ modell vizsgálat után? Miért nem elég jó?

Mert Yii védi meg a biztonsági meglepetés.

Bár ez nyilvánvalónak tűnhet, de Yii semmilyen módon nem tudván, hogy az adatokat küldtek a formából, és az adatok nem a rosszfiú, aki szintetizált az eredményeket annak érdekében, hogy megtévessze a kérelmet.

Ez a védelem a két forgatókönyv:
  1. Egyes modellek a tulajdonságokat, amelyek engedélyezettek, de nem egy bizonyos formában. Például egy formája „A jelszó változás” kell tölteni a területen „jelszó” és a „jelszót”. De a forgatókönyv Jelszóváltoztatás, isAdmin attribútumot kell jelölni «nem biztonságos» (nem biztonságos a tömeges hozzárendelés).
  2. Minden modell alapján az objektumok CActiveRecord olyan belső tulajdonságok (tulajdonságok), hogy veszélybe kerülhet, ha rossz ember lehetett masszívan engedményezheti attribútumokat. Ilyen svoyotv:
    • $ Model-> isnewrecord
    • $ Model-> dbcriteria
    • $ Model-> PrimaryKey
    • $ Model-> tablealias
    • $ Model-> forgatókönyv
Vannak más tulajdonságait, mindet, nem fogjuk felsorolni itt. Elég ijesztő arra gondolni, mi történne, ha egy rosszfiú lehetett kezelni ezeket a tulajdonságokat. De nem azért, mert egyáltalán nem említi érvényesítési szabályok - «biztonságos» - védve vannak.

Yii egy konzervatív megközelítés. Az attribútumok tekinthető biztonságosnak, ha a fejlesztő nem határozza meg kifejezetten azokat biztonságos helyen (Paradigm „default deny”).

Kívánatos, hogy vizsgálja felül a validációs szabályok időről időre, hogy megbizonyosodjon arról, hogy el ne módosítsa a tulajdonságokat, hogy a felhasználó nem férhet (különösen a forgatókönyv), mert gyakran a modellben minden területén megjelölt «biztonságos».

a fordító

Azt hozzá az utolsó bekezdés. Mi akadályozhatja a tömeg értékadásra modellen keresztül, akkor létrehozhat egy űrlapot modell egyértelműen meghatározott területeken lehet küldeni a formában. És már a modell formájában poizvodit hozzárendelésével modell értékeit és etilén rekord és termel megőrzése.

Kapcsolódó cikkek