Php és java script biztonságos formák

Természetesen ellenőrizze az adatokat a felhasználó által megadott formában és így a PHP-script minden bizonnyal sor kerül közvetlenül a PHP-script, hogy a felhasználó nem véletlenül helytelen információt, vagy nem tette meg szándékosan provokálni a script végrehajtása hibákat. De tegyük fel, hogy van egy hely nagyon nagy a forgalom, például 10000 látogatók egy nap, és minden felhasználó beírja az adatokat az űrlapot és elküldi a szervernek. Mondjuk, 50% -a felhasználók ne töltse, bizonyos területeken, és töltse ki őket helyesen. Az adatok továbbítása a forgatókönyvet, ellenőrizni, és az űrlap visszakerül a felhasználó számára, hogy javítsa ki a hibát. A mi esetünkben, ha nagy számú felhasználó létrejön az extra terhelést a szerver és a nagyobb forgalmat mind a szerver és a felhasználó.

Annak elkerülése érdekében, a fent említett problémák - célszerűbb a Java Script helyességét ellenőrizni a töltés a mezők. A statisztikák szerint, több mint 95% -a felhasználók szörfözhet az interneten böngészők, amelyek támogatják a Java Script. A felhasználók a régebbi böngészők vagy böngészők, amelyek nem támogatják a Java Script vagy Java Script szándékosan kikapcsolt statisztikák szerint kevesebb, mint 5%.







Most azokat a szabályokat, amelyekkel az egyes mezők ellenőrizni fogják.

Feladó neve (feladó) - nem üres, nem lehet rövidebb, mint mondjuk a 3 karakter, nem hosszabb, mint 20.

p_sender = document.myform.sender.value.toString ();
if (p_sender! = "") if (p_sender.length<3 || p_sender.length>20) Az alert ( "Kérem adja meg a nevét (3-20 karakter)!");
document.myform.sender.focus ();
return false;
>
> Else alert ( "Meg kell adni egy nevet!");
document.myform.sender.focus ();
return false;
>

ICQ szám (ICQ) - ha adva, akkor az csak számjegyek, nem kevesebb, mint 5 és legfeljebb 9 karakter. Post A java-script közvetlenül a címke mezőt, majd írja ICQ szám - ez a korlátozás lehetővé teszi a felhasználó számára, hogy belépjen ebbe a mezőbe csak számokat

Most, a mezőket ki kell tölteni hozzá:

onkeypress = 'checkreq ()' onkeyup = 'checkreq ()' onBlur = 'checkreq ()'


Most határozzuk checkreq function ()

funkció checkreq () path = document.myform;
TMP = (path.sender.value == "");
if (! tmp (path.sender.value.length <3)) tmp = true;
path.Submit.disabled = tmp;
ha (TMP) visszatérési;
TMP = (path.msg.value == "");
if (! tmp (path.msg.value.length <10)) tmp = true;
path.Submit.disabled = tmp;
>

Most a „összegyűjti” az egyes blokkok úgy vannak kialakítva, hogy teszteljék a konkrét területeken egy funkciót, és adjuk hozzá a formáját az eljárás, amely ezt a funkciót Az űrlap elküldése előtt PHP-script.






Most, amikor a felhasználó megpróbálja elküldeni az űrlapot a PHP-script vezérlés átadódik az első java-script, hogy FALSE, ha legalább egy felhasználó hibát talál, a kurzor a területen, ahol a hiba (az első sorban), és az űrlap egyszerűen nem lehet elküldeni.

Mint már említettük, ellenőrizze a forma java script nem küldi hibásan kitöltött formanyomtatványokat a szerveren, ezáltal csökkentve a terhelést a szerver és sávszélesség, de ez nem mentesíti Önt attól, hogy egy merev megvizsgáltak minden továbbított adatokat a felhasználó, mint a felhasználó szándékosan kikapcsolni java script a böngészőben át a módosított adatokat.

2. rész Protection formában PHP

Eddig védte a PHP-script hibás küldött adatok formájában. De lehet alkalmazni, hogy az alapok javasolt PHP védelmi formák.

Bizonyára sokan ismerik a problémát az árvíz (ehhez gyakran használják egy egyszerű program, gyakran írt ugyanazon a PHP). Azt hiszem, nem lesz nagyon elégedett, hogy megtalálja a saját vendégkönyvet pár ezer üzenetet, gyakran támadó? A legegyszerűbb módja annak, hogy megoldja ezt a problémát - egy kis kép a bemeneti a kódot, és a kód mező (mind a nagy e-mail szolgáltatások). Gondolod, hogy ez nagyon nehéz? Éppen ellenkezőleg - az ügyet az 5 perc. Vágjunk bele.

Code.php tőzsdei fájlt generál egy képet egy véletlen chisom

session_start ();
$ Sode = rand (100000,999999);
session_register ( "Sode");
$ Image = ImageCreateFromPng ( "code.png");
$ Color = ImageColorAllocate ($ fényképek, 254, 165, 65);
settype ($ Sode, "string");
ImageString ($ fényképek, 3, 30, 3, $ Sode, $ szín);
Header ( "Content-type: image / png");
ImagePng ($ fényképek);
imageDestroy ($ fényképek);

A code.png fájl megtartottunk egy tiszta (vagy a szükséges háttér) PNG fájl mérete 100 x 20 pixel. Random hatjegyű szám van írva, hogy a változó $ alábbi kódot, ez tárolja a session, és rárakódik a képet. Ez a kép is megjelenik a böngésző az alábbiak szerint:

tovább növeli az űrlap mező, amelybe a felhasználó beírja a kódot

És aztán, miután az űrlap elküldése a felhasználó PHP script fogjuk összehasonlítani a kódot tárolja a munkamenet ($ HTTP_SESSION_VARS [ „kód”]), az átadott felhasználói ($ HTTP_POST_VARS [ „code2”]) kód esetén mismatch nem veszi az űrlap adatokat és küldje vissza a felhasználónak. Így a program-Fluder egyszerűen nem tudja elolvasni a kódot a kép.

Ez minden. Most, a forma megbízhatóbbak lesznek.