Va rugam dezactivati programul ad block pentru a vizualiza pagina!

Cumpara abonament!
Plateste cu PayPal

Validare formular PHP. Cum să evitați exploatările $_SERVER["PHP_SELF"]? Validați datele formularului cu PHP. Funcția PHP htmlspecialchars(). Funcția PHP trim(). Funcția PHP stripslashes(). Funcția test_input(). Variabila $_POST.

Partajeaza in Google Classroom

Partajeaza cu Google Classroom
Susține Lectii-Virtuale!

Memorator: Descriere video Descarcă PDF

Cum să evitați exploatările $_SERVER["PHP_SELF"]?

Exploatările $_SERVER["PHP_SELF"] pot fi evitate folosind funcția htmlspecialchars().

Codul formularului ar trebui să arate astfel:
 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Funcția htmlspecialchars() convertește caracterele speciale în entități HTML. Acum, dacă utilizatorul încearcă să exploateze variabila PHP_SELF, va rezulta următoarea ieșire (output):
 
<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Tentativa de exploatare eșuează și nu se face niciun rău!

Validați datele formularului cu PHP

Primul lucru pe care îl vom face este să trecem toate variabilele prin funcția PHP htmlspecialchars().

Când folosim funcția htmlspecialchars(); atunci dacă un utilizator încearcă să trimită următoarele într-un câmp text:
 
<script>location.href('http://www.hacked.com')</script>

- acest lucru nu ar fi executat, deoarece va fi salvat ca și cod HTML scăpat, astfel:
 
&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

Codul este acum sigur pentru a fi afișat pe o pagină sau în interiorul unui e-mail.

De asemenea, vom face alte două lucruri atunci când utilizatorul va trimite formularul:
 
  1. Scoateți caracterele inutile (spațiu suplimentar, filă, linie nouă (extra space, tab, newline)) din datele de intrare ale utilizatorului (cu funcția PHP trim() )
  2. Eliminați backslashes (\) din datele de intrare ale utilizatorului (cu funcția PHP stripslashes())

Următorul pas este să creem o funcție care să facă toate verificările pentru noi (ceea ce este mult mai convenabil decât scrierea aceluiași cod încă o dată).

Vom numi funcția test_input().

Acum, putem verifica fiecare variabilă $_POST cu funcția test_input(), iar scriptul va arata astfel:

Exemplu:
 
<?php
// definiți variabilele și setați valorile goale
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Observați că la începutul scriptului, verificăm dacă formularul a fost trimis folosind $_SERVER ["REQUEST_METHOD"]. Dacă REQUEST_METHOD este POST, atunci formularul a fost trimis - și ar trebui validat. Dacă nu a fost trimis, săriți validarea și afișați un formular necompletat.

Cu toate acestea, în exemplul de mai sus, toate câmpurile de introducere sunt opționale. Scriptul funcționează bine chiar dacă utilizatorul nu introduce date.

Următorul pas este de a face necesare câmpurile de intrare și de a crea mesaje de eroare, dacă este nevoie.
Cumpara abonament
Plătește cu PayPal

Ajutor
Feedback-ul d-voastră este important pentru noi. Dacă observați vreo neregulă vă rugăm să ne-o semnalați apăsând butonul Trimite Feedback de mai jos.

Despre Lecții-Virtuale.ro

Lecții-Virtuale este o platformă educațională care oferă suport în vederea pregătirii pentru Evaluare Națională și Bacalaureat la Matematică, Fizică și Chimie. Lecțiile noastre sunt alcătuite din filme și exerciții și probleme cu tot cu rezolvări. Platforma noastră este o soluție ideală pentru școala online. Pentru facilitarea activității profesorilor în cadrul ecosistemului GSuite de la Google am implementat butonul Google Classroom. Scopul nostru este să ne concentrăm pe prezentarea noțiunilor și fenomenelor într-o manieră care să stimuleze înțelegerea și nu memorarea mecanică. Ne propunem să facilităm accesul la conținut educațional de calitate mai ales elevilor cu venituri mai modeste care nu își pemit meditații particulare. Sperăm să vă simțiti bine alături de noi și să invățați lucruri folositoare. Hai România!

Newsletter

Abonează-te la Newsletter pentru a fi la curent cu toate ofertele noastre.

Parteneri

EduApps partener Lectii Virtuale UiPath partener Lectii Virtuale Scoala365 partener Lectii Virtuale CCD Galați partener Lectii Virtuale

2024 © Lecții-virtuale.ro Toate drepturile rezervate
Termeni   Despre   Contact   Confidenţialitate   Cariere Parteneri