Aperçu:
Dans le développement Web, assurer la sécurité des données d'entrée des utilisateurs est cruciale. Une entrée non filtrée et vérifiée peut entraîner des risques de sécurité tels que l'injection SQL, les attaques de scripts inter-sites (XSS). Cet article présentera comment utiliser PHP pour le filtrage et la vérification des données pour garantir la sécurité de l'ensemble du processus de l'entrée de l'utilisateur au stockage de la base de données.
Les données soumises par l'utilisateur ne sont pas dignes de confiance et doivent être filtrées en premier. Les techniques de filtrage des entrées courantes comprennent:
Pour empêcher les attaques XSS, les balises HTML dans l'entrée utilisateur doivent être échappées. La fonction intégrée PHP HTMLSpecialChars () peut implémenter cette fonction.
$input = $_POST['input'];
$filteredInput = htmlspecialchars($input);
Utilisez la fonction TRIM () pour éliminer les espaces aux deux extrémités des données d'entrée, ce qui aide à éviter les problèmes causés par des espaces inattendus.
$input = $_POST['input'];
$filteredInput = trim($input);
Afin d'éviter les problèmes d'exécution de code causés par des caractères spéciaux contenus dans l'entrée, vous pouvez utiliser la fonction filter_var () conjointement avec le filtre filter_sanitize_string pour le filtrage.
$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
En plus du filtrage, la légalité des données d'entrée est également requise. Les méthodes de vérification courantes sont les suivantes:
Utilisez filter_var () avec filter_validate_email pour vérifier le format d'adresse e-mail.
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Adresse e-mail légale
} else {
// Adresse e-mail illégale
}
Utilisez également filter_var () avec filter_validate_url pour vérifier le format URL.
$url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
// URLlégitime
} else {
// URLillégal
}
Utilisez la fonction is_numeric () pour vérifier si l'entrée est un nombre.
$number = $_POST['number'];
if (is_numeric($number)) {
// Entrée en nombre
} else {
// Entrez un non-chiffre
}
Avant d'écrire des données utilisateur dans la base de données, un traitement supplémentaire est nécessaire pour assurer la sécurité.
Les déclarations de prétraitement qui transmettent les paramètres par les espaces réservés empêchent efficacement l'injection de SQL. L'extension PDO ou MySQLI de PHP prend en charge ce mécanisme.
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $email);
$name = $_POST['name'];
$email = $_POST['email'];
$stmt->execute();
Lors du stockage des mots de passe des utilisateurs, évitez l'enregistrement de texte brut et utilisez Password_Hash () pour le hachage.
$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
La sécurité des données est le lien principal du développement Web. Grâce à des mesures raisonnables de filtrage des entrées, de vérification et de sécurité de la base de données, les capacités de protection des applications peuvent être efficacement améliorées et les risques de sécurité potentiels peuvent être évités. Il est recommandé d'utiliser de manière flexible ces technologies à la lumière d'un projet spécifique doit garantir la sécurité des données utilisateur.