Maison > Article > développement back-end > Problèmes de sécurité PHP courants et solutions
1. Injection SQL
L'injection SQL est l'une des plus grandes menaces pour votre site Web si votre base de données est injectée par le SQL In de quelqu'un d'autre. En cas d'attaque, d'autres personnes peuvent transférer votre base de données, ce qui peut avoir des conséquences plus graves.
Solution :
Il existe deux solutions principales. Échapper aux données saisies par l'utilisateur ou utiliser des instructions encapsulées. La méthode d'échappement consiste à encapsuler une fonction pour filtrer les données soumises par l'utilisateur et supprimer les balises nuisibles. Cependant, je ne recommande pas cette méthode car il est facile d’oublier de la faire partout.
Ensuite, je vais vous présenter comment utiliser PDO pour exécuter des instructions encapsulées (la même chose est vraie pour mysqi) :
$username = $_GET['username']; $query = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $query->execute(['username' => $username]); $data = $query->fetch();
XSS
. XSS est également appelé CSS (Cross Site Script), attaque de script intersite. Il s'agit d'un attaquant malveillant qui insère du code HTML malveillant dans une page Web. Lorsqu'un utilisateur parcourt la page, le code HTML intégré dans le Web sera exécuté, atteignant ainsi l'objectif particulier d'attaquer l'utilisateur de manière malveillante.
Solution :
Ne faites absolument confiance à aucune entrée de l'utilisateur et filtrez tous les caractères spéciaux dans l'entrée. Cela éliminera la plupart des attaques XSS :
<?php $searchQuery = htmlentities($searchQuery, ENT_QUOTES);
Ou vous pouvez utiliser le moteur de modèles Twig. Les moteurs de modèles généraux ajouteront la prévention des entités html à la sortie par défaut.
3. Exécutez quelques opérations.
Solution :
La méthode de défense la plus courante consiste à générer une chaîne sécurisée cryptée par jeton CSRF, généralement appelée jeton, et à stocker le jeton dans un cookie ou une session.
Chaque fois que vous créez un formulaire sur une page Web, placez le jeton dans le champ caché du formulaire. Le serveur de demande de formulaire le comparera ensuite en fonction du cookie de l'utilisateur ou du jeton dans la session, et du la vérification sera réussie. Donnez un laissez-passer. Étant donné que l'attaquant ne peut pas connaître le contenu du jeton (le jeton est aléatoire pour chaque formulaire), il n'y a aucun moyen de se faire passer pour l'utilisateur. Tutoriel recommandé :Tutoriel vidéo PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!