Maison  >  Article  >  développement back-end  >  Foire aux questions et solutions pour la sécurité des formulaires PHP

Foire aux questions et solutions pour la sécurité des formulaires PHP

PHPz
PHPzoriginal
2023-08-26 14:06:151326parcourir

Foire aux questions et solutions pour la sécurité des formulaires PHP

Problèmes courants et solutions à la sécurité des formulaires PHP

Avec le développement d'Internet, de plus en plus de sites Web et d'applications utilisent PHP pour traiter les données des formulaires soumis par les utilisateurs. Cependant, en raison du manque de mesures de sécurité adéquates, les formulaires PHP sont souvent des cibles faciles pour les attaques malveillantes. Cet article présentera les problèmes courants liés à la sécurité des formulaires PHP et fournira les solutions correspondantes.

1. Attaque de script intersite (XSS)

L'attaque de script intersite est une vulnérabilité courante en matière de sécurité réseau. Les attaquants utilisent les vulnérabilités des sites Web pour injecter des scripts malveillants aux utilisateurs. Ces scripts seront exécutés dans le navigateur de l'utilisateur pour voler les informations sensibles de l'utilisateur ou exécuter d'autres comportements malveillants.

Solution :

  1. Filtrage d'entrée : pour les données de formulaire soumises par les utilisateurs, utilisez la fonction htmlspecialchars intégrée de PHP pour échapper au traitement afin de convertir les caractères spéciaux en entités HTML afin d'empêcher l'injection de scripts malveillants. L'exemple de code est le suivant :
$name = htmlspecialchars($_POST['name']);
  1. Filtrage de sortie : avant d'afficher les données soumises par l'utilisateur sur la page Web, les données doivent également être filtrées. Utilisez la fonction de filtrage XSS strip_tags pour supprimer les balises HTML et PHP afin d'empêcher l'exécution de scripts malveillants. L'exemple de code est le suivant :
echo strip_tags($name);

2. Attaque par injection SQL

L'attaque par injection SQL signifie que l'attaquant injecte du code SQL dans le formulaire de saisie pour modifier la base de données ou obtenir des données sensibles. Il s’agit d’une méthode d’attaque courante qui constitue une menace potentielle pour la sécurité des sites Web et des informations des utilisateurs.

Solution :

  1. Utilisez des requêtes paramétrées ou des requêtes précompilées : pour les données soumises par l'utilisateur, utilisez des instructions précompilées PDO ou mysqli ou des liaisons de paramètres pour créer des instructions de requête SQL. Cela empêche les attaques par injection malveillantes. L'exemple de code est le suivant :
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :name');
$stmt->bindParam(':name', $name);
$stmt->execute();
  1. Filtrage des entrées de données : pour les données saisies par l'utilisateur, utilisez la fonction de filtrage intégrée de PHP à des fins de prévention. Par exemple, utilisez la fonction mysqli_real_escape_string pour échapper aux caractères spéciaux. L'exemple de code est le suivant :
$name = mysqli_real_escape_string($conn, $_POST['name']);

3. Forgerie de formulaire (CSRF)

La contrefaçon de formulaire est une méthode d'attaque qui utilise l'identité de l'utilisateur pour soumettre des requêtes malveillantes sans le savoir. Les attaquants forgent des requêtes et effectuent des actions illégales en obtenant les informations de connexion des utilisateurs.

Solution :

  1. Utiliser le jeton CSRF : intégrez un jeton généré aléatoirement dans le formulaire associé à la session de l'utilisateur. Lors de la soumission du formulaire, validez la validité du token. L'exemple de code est le suivant :
<form action="submit.php" method="post">
  <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
  <!-- 其他表单元素 -->
  <input type="submit" value="提交">
</form>
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  if ($_POST['csrf_token'] === $_SESSION['csrf_token']) {
    // 验证通过
  } else {
    // 验证失败,可能是CSRF攻击
  }
}
  1. Définir la vérification du référent : vérifiez si la source de la requête est légitime en vérifiant le champ Referer de l'en-tête de la requête HTTP. Autorisez uniquement des sources spécifiques à accéder à la page de soumission du formulaire pour empêcher les attaques de falsification de requêtes intersites. L'exemple de code est le suivant :
if (isset($_SERVER['HTTP_REFERER']) && parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) === 'example.com') {
  // 合法的来源,允许提交表单
} else {
  // 非法的来源,可能是CSRF攻击
}

En résumé, les problèmes de sécurité des formulaires PHP incluent principalement les attaques de scripts intersites, les attaques par injection SQL et les problèmes de falsification de formulaires. Grâce à des méthodes telles que le filtrage des entrées et des sorties, la précompilation paramétrée des requêtes et l'utilisation de jetons CSRF, ces méthodes d'attaque courantes peuvent être efficacement évitées et la sécurité des utilisateurs et des sites Web protégée. Lors du développement d’applications PHP, il est crucial de garder à l’esprit la sécurité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn