Formularele securizate pentru php și java

Desigur, verificarea datelor introduse de utilizator în formă și să dea script PHP ar trebui să aibă cu siguranță, loc în mod direct într-un script PHP, astfel încât utilizatorul nu a intrat din greșeală informații incorecte sau nu a făcut în mod deliberat pentru a provoca erori de execuție script-ul. Dar să ne imaginăm că avem un site cu trafic foarte mare, de exemplu, 10.000 de vizite pe zi, iar fiecare utilizator introduce datele în formularul și trimite-l la server. Să presupunem că 50% dintre utilizatori nu umple o parte din câmpuri sau nu le umple incorect. Datele sunt transferate în script, verificate, iar formularul este returnat utilizatorului pentru corectarea erorilor. În cazul nostru, cu un număr mare de utilizatori, aceasta va crea o încărcare inutilă pe server și trafic inutil atât pentru server, cât și pentru utilizatori.

Pentru a evita problemele de mai sus - este mai adecvată utilizarea Java Script pentru a verifica corectitudinea umplerii câmpurilor de formular. Potrivit statisticilor, mai mult de 95% dintre utilizatorii de surfing de pe Internet folosesc browsere care suportă Java Script. Utilizatorii cu versiuni vechi ale browserelor sau browsere care nu acceptă Java Script sau care au dezactivat cu bună știință Java Script pentru statistici mai mici de 5%.







Acum vom defini regulile prin care vor fi verificate câmpurile individuale.

Numele expeditorului nu este gol, nu mai scurt, de exemplu, 3 caractere, nu mai mult de 20.

p_sender = document.myform.sender.value.toString ();
dacă (p_sender! = "") dacă (p_sender.length<3 || p_sender.length>20) alertă ("Introduceți numele dvs. (3-20 caractere)!");
document.myform.sender.focus ();
return false;
>
> alt alert ("Trebuie să introduceți un nume!");
document.myform.sender.focus ();
return false;
>

Numărul ICQ (icq) - dacă este specificat, este format numai din cifre, nu mai mici de 5 și nu mai mult de 9 caractere. Vom plasa o parte din scriptul Java direct în câmpul de etichetare pentru introducerea numărului ICQ - această restricție va permite utilizatorului să introducă numai numere în acest câmp

Apoi, trebuie să verificați lungimea numărului introdus

p_icq = document.myform.icq.value.toString ();
dacă (p_icq! = "") dacă (p_icq.length<5 || p_icq.length>9) alertă ("numărul ICQ este de 5-9 caractere lungime!");
document.myform.icq.focus ();
return false;
>
>

Textul mesajului (msg) nu este gol și, de exemplu, cel puțin 10 caractere

p_msg = document.myform.msg.value.toString ();
dacă (p_msg.length <10) alert ("Необходимо ввести текст сообщения (не менее 10 символов) !");
document.myform.msg.focus ();
return false;
>

Acum trebuie să adăugăm următoarele câmpuri:

onkeypress = 'checkreq ()' onkeyup = 'checkreq ()' onblur = 'checkreq ()'


Acum definim funcția checkreq ()

funcția checkreq () path = document.myform;
tmp = (cale.sender.value == "" ");
dacă (! tmp (path.sender.value.length <3)) tmp = true;
cale.Submit.disabled = tmp;
dacă (tmp) returnează;
tmp = (cale.msg.value == "" ");
dacă (! tmp (path.msg.value.length <10)) tmp = true;
cale.Submit.disabled = tmp;
>

Acum „colecta“ blocurile individuale sunt proiectate pentru a testa domeniile specifice într-o singură funcție, și se adaugă la forma procedurii, care va apela această funcție înainte de a trimite formularul PHP-script.







primul java-script Acum, atunci când un utilizator încearcă să trimită formularul la un control script PHP este transferat care returnează FALSE în cazul în care cel puțin o eroare de utilizator este găsit, cursorul este plasat în câmpul care conține eroarea (primul rând), iar forma nu va fi pur și simplu trimis.

După cum sa menționat mai sus, verifica script-ul sub formă Java evită trimiterea de formulare completate incorect la server, reducând astfel sarcina pe server și lățime de bandă, dar nu te scutește de a avea o inspecție rigidă a tuturor datelor transmise de către utilizator, astfel cum utilizatorul poate dezactiva intenționat scriptul Java în browserul său pentru a transfera datele modificate.

Partea 2. Protejarea formularelor cu PHP

Până acum, am protejat scriptul PHP de date incorecte transmise din formular. Dar puteți utiliza și instrumentele oferite de PHP pentru protejarea formularelor.

Probabil mulți oameni cunosc problema inundațiilor (un program simplu este adesea folosit pentru acest lucru, scris adesea pe același PHP). Cred că nu veți fi fericit să găsiți în cartea dvs. de oaspeți câteva mii de mesaje, adesea ofensive? Cea mai ușoară modalitate de a rezolva această problemă este o imagine mică, cu un cod și un câmp pentru introducerea acestui cod (ca în cazul serviciilor de mare poștă). Crezi că este foarte dificil? Dimpotrivă, aceasta este o chestiune de 5 minute. Deci, să începem.

Afișați fișierul code.php care generează o imagine cu un șablon aleatoriu

session_start ();
$ code = rand (100000.999999);
session_register ("cod");
$ Imagine = imageCreateFromPng ("code.png");
$ Color = imageColorAllocate ($ Imagine, 254, 165, 65);
settype (codul $, "șir");
imageString ($ Imagine, 3, 30, 3, $ sode, $ Culoare);
Antet ("Tip de conținut: imagine / png");
imagePng ($ Imagine);
imageDestroy ($ imagine);

În fișierul code.png avem un fișier PNG curat (sau cu fundal necesar) cu dimensiunile de 100 x 20 pixeli. Un număr șase cifre aleatoriu este scris în variabila $ code, stocat într-o sesiune și suprapus pe imagine. Această imagine poate fi afișată în browser după cum urmează

Mai departe, în forma noastră adăugăm un câmp în care utilizatorul introduce codul

Și apoi, după trimiterea formularului de utilizator script PHP, vom compara codul stocat în sesiunea ($ HTTP_SESSION_VARS [ „cod“]), cu utilizatorul transferat ($ HTTP_POST_VARS [ „code2“]) codul în cazul inversării nu ia datele formularului și returnați-o utilizatorului. Astfel, programul-flooder pur și simplu nu poate citi codul din imagine.

Asta e tot. Formularul dvs. va fi mai sigur.