- Introducere PHP
- Instalare si Configurare
- Despre sintaxa PHP
- Varibile PHP
- Constante
- Operatori
- Procesul Decizional
- Instructiuni Repetitive
- Array-uri (Vectori)
- Concepte Web
- Incluziunea fisierelor
- Lucrul cu fisiere
- Functii
- Cookie
- Session
- Trimiterea de mailuri
- File Uploading
- Standarde de Programare
- Metodele GET si POST
- Validarea Formularelor
- Campuri obligatorii
- Variabile Predefinite
- Regular Expressions
- Erori si Exceptii
- Debugging
- Data si Timpul
- Mysqli â Conexiunea la baza de date
- Crearea unei baze de date
- Stergerea unei baze de date
- Inserare date
- Preluare date din MySql
- Stefanescu Mihai a postat in Paginare in PHP
- johhny a postat in Paginare in PHP
- Stefanescu Mihai a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- madalin a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- Stefanescu Mihai a postat in Featureuri site
Validarea Formularelor
Primul lucru pe care trebuie sa-l aveti in minte cand procesati formulare in PHP este securitatea.
Avem urmatorul formular:
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="POST"> Nume: <input type="text" name="nume" /> Email: <input type="text" name="email" /> WebSite: <input type="text" name="website" /> Comentariu: <textarea name='comentariu'></textarea> Sexul: <input type='radio' name='sexul' value='m'>Male <input type='radio' name='sexul' value='f'>Female <input type="submit" /> </form>
Regulile de validare impuse:
Camp | Reguli Validare |
Nume | Necesar. Trebuie sa contina doar litere si spatii albe. |
Necesar. Trebuie sa contina o adresa de email valida. | |
Website | Optional. Daca este completat trebuie sa fie un URL valid. |
Comentariu | Optional. Text. |
Sexul | Necesar. Trebuie sa fie selectata o valoare |
In primul rand hai sa ne uitam la action-ul formularului:
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="POST">
Se observa clar ca am folosit metoda POST, dar probabil va intrebati ce estehtmlspecialcharacters($_SERVER[‘PHP_SELF’]) si de ce l-am folosit.
Hai sa luam componentele pe rand, avem in primul rand variabila $_SEVER[‘PHP_SELF’] care nu face altceva decat sa returneze locatia scriptului curent.
Deci, aceasta variabila ($_SERVER[‘PHP_SELF’]) transmite informatia catre acelasi script in loc sa o transmita catre alta pagina, astfel utilizatorul va primi eroarea (daca exista una) pe aceasi pagina cu formularul.Acum hai sa discutam despre functia htmlspecialcharacters(). Aceasta functie converteste cracterele HTML in entitati. Asta inseamna ca orice caracter precum < sau > va deveni < si >. Asta previne injectarea de cod Javascript (Cross-site Scripting Attack) in formular.Despre Securitate in PHPVariabila $_SERVER[‘PHP_SELF’] este vulnerabila atacurilor!
Sa presupunem ca avem urmatorul formular pagina php numita test_form.php:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Acum, daca un utilizator introduce urmatorul URL in bara de adrese “http://www.siteulmeu.ro/test_form.php” $_SERVER[‘PHP_SELF’] ne va da urmatorul cod HTML:
<form method="post" action="test_form.php">
Pana aici totul merge foarte bine, dar hai sa ne gandim ce se va intampla daca un utilizator introduce urmatorul cod:
http://www.siteulmeu.ro/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
Acesta va avea urmatorul rezultat:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Acest cod injecteaza un cod javscript in site, iar cand pagina este incarcata codul va fi executat. Acesta este este doar un exemplu inofensiv de injectare a codului, dar pornind de la el se poate ajunge la lucruri mai periculoase.
Atentie, orice cod javascript poate fi inserat intre tag-urile <script>, astfel inca un hacker poate redirectiona utilizatorii catre alt server sau poate insera cod mailcios pentru a fura informatiile utiolizatorilor.Cum evitam exploiturile $_SERVER[‘PHP_SELF’]Vulnerabilitatile $_SERVER[“PHP_SELF”] pot fi evitate folosind functia htmlspecialchars().Atunci cand avem un formular de genul:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Rezultatul va avea urmatoarea forma:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
Cod ce nu afecteaza cu nimic scriptul nostru.
Validarea formularului
Primul lucru pe care trebuie sa-l facem este sa trecem informatiile prin prin functia htmlspecialchars() inainte sa le prelucram sau sa le punem in baza de date.
Cand folosim functia htmlspecialcharacters()si un utilizator incearca sa transmita urmatorul cod:
<script>location.href('http://www.siteul_hackerului.ro')</script>
nu va fi executat pentru ca toate caracterele html sunt transformate in entitati:
<script>location.href('http://www.siteul-hackerului.ro')</script>
Urmatorul pas este sa facem o functie ce va verifica codul (mai simplu decat sa scriem acelasi cod de fiecare data). Hai sa numim aceasta functie testare().
if ($_SERVER["REQUEST_METHOD"] === "POST") { $nume = testare($_POST["nume"]); $email = testare($_POST["email"]); $website = testare($_POST["website"]); $comment = testare($_POST["comment"]); $sexul = testare($_POST["sexul"]); } function testare($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
Comentarii
Inca nu au fost postate comentarii, fii primul care posteaza un comentariu!