MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Securitatea datelor

Securitatea datelor are o mare importanță în PHP. Vom examina câteva mecanisme simple care pot spori securitatea site-ului nostru web.

Dar mai întâi, să luăm formularul din tema anterioară:

<!DOCTYPE html>
<html>
<head>
<title>.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$name = "ne definit";
$age = "ne definit";
if(isset($_POST["name"])){
   $name = $_POST["name"];
}
if(isset($_POST["age"])){
   $age = $_POST["age"];
}
echo "Nume: $name <br> Vârstă: $age";
?>
<h3>Formular de introducere a datelor</h3>
<form method="POST">
   <p>Nume: <input type="text" name="name" /></p>
   <p>Vârstă: <input type="number" name="age" /></p>
   <input type="submit" value="Trimite">
</form>
</body>
</html>

Și să încercăm să introducem în ea unele date. De exemplu, să introducem în câmpul pentru nume "<script>alert('hi');</script>":

După trimiterea datelor, în marcare HTML va fi inserat cod JavaScript care afișează o fereastră cu mesaj.

Acesta este un script relativ simplu și inofensiv. Totuși, codul inserat poate fi mai dăunător. Și pentru a evita astfel de probleme de securitate, se recomandă utilizarea funcției htmlentities(). Ca parametru, aceasta primește valoarea care trebuie ecranată:

$name = "ne definit";
$age = "ne definit";
if(isset($_POST["name"])){
   $name = htmlentities($_POST["name"]);
}
if(isset($_POST["age"])){
   $age = htmlentities($_POST["age"]);
}
echo "Nume: $name <br> Vârstă: $age";

Și chiar după introducerea codului HTML sau JavaScript, toate etichetele vor fi ecranate, iar noi vom obține următoarea ieșire:

O altă funcție specială - htmlspecialchars() este similară ca acțiune cu htmlentities():

$name = "ne definit";
$age = "ne definit";
if(isset($_POST["name"])){
   $name = htmlspecialchars($_POST["name"]);
}
if(isset($_POST["age"])){
   $age = htmlspecialchars($_POST["age"]);
}
echo "Nume: $name <br> Vârstă: $age";

O altă funcție - strip_tags() permite eliminarea completă a etichetelor HTML:

$name = "ne definit";
$age = "ne definit";
if(isset($_POST["name"])){
   $name = strip_tags($_POST["name"]);
}
if(isset($_POST["age"])){
   $age = strip_tags($_POST["age"]);
}
echo "Nume: $name <br> Vârstă: $age";

Rezultatul funcționării ei, în cazul aceleiași introduceri, va fi următoarea ieșire:

← Lecția anterioară Lecția următoare →