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:
