Maison  >  Article  >  développement back-end  >  Meilleures pratiques pour prévenir les attaques d'enregistrement PHP

Meilleures pratiques pour prévenir les attaques d'enregistrement PHP

王林
王林original
2023-08-26 23:43:45633parcourir

Meilleures pratiques pour prévenir les attaques denregistrement PHP

Meilleures pratiques pour les attaques d'enregistrement PHP Anti-Flash

Avec le développement d'Internet, les fonctions d'enregistrement deviennent de plus en plus courantes dans divers sites Web et applications. Mais dans le même temps, la fonction d’enregistrement est également devenue un point d’entrée souvent exploité par les attaquants. Parmi elles, la méthode d'attaque la plus courante est l'attaque d'enregistrement et de vol de compte, c'est-à-dire que l'attaquant effectue un grand nombre de demandes d'enregistrement via des programmes automatisés, occupant ainsi les ressources du serveur et perturbant les services normaux. Pour lutter contre cette attaque, nous pouvons adopter quelques bonnes pratiques pour sécuriser notre fonctionnalité d’enregistrement.

  1. Ajouter une vérification d'interaction anti-humaine

Les attaques de brossage d'enregistrement courantes se caractérisent par l'utilisation de programmes automatisés pour effectuer des demandes d'enregistrement. Ces programmes terminent généralement tous les processus d'enregistrement rapidement, alors que les utilisateurs réels nécessitent un certain temps et une certaine interaction pour les terminer. L’enregistrement automatisé peut être efficacement empêché en ajoutant une vérification des interactions anti-humaines. La saisie de codes de vérification, le déplacement de curseurs, la vérification des numéros de téléphone, etc. sont autant de méthodes courantes de vérification des interactions anti-humaines.

Par exemple, Google reCAPTCHA peut être utilisé pour ajouter une vérification captcha. Tout d'abord, créez un compte sur le site officiel de Google reCAPTCHA (https://www.google.com/recaptcha/intro/v3.html) et obtenez la clé API correspondante. Ensuite, intégrez le code de vérification reCAPTCHA dans la page d'inscription, comme indiqué ci-dessous :

<script src="https://www.google.com/recaptcha/api.js?render=你的Site Key"></script>
<form method="post" action="register.php">
  <!-- 用户名、密码等注册字段 -->
  <div class="g-recaptcha" data-sitekey="你的Site Key"></div>
  <button type="submit">注册</button>
</form>
<script>
grecaptcha.ready(function() {
  grecaptcha.execute('你的Site Key', {action: 'register'}).then(function(token) {
    // 将token与其他注册数据一起提交到服务器
  });
});
</script>

Vérifiez la réponse reCAPTCHA côté serveur. L'exemple de code est le suivant :

<?php
$secretKey = "你的Secret Key";
$response = $_POST['g-recaptcha-response'];
$remoteIp = $_SERVER['REMOTE_ADDR'];

$url = "https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$response."&remoteip=".$remoteIp;
$response_json = file_get_contents($url);
$response_data = json_decode($response_json, true);

if($response_data['success'] == true) {
  // 验证通过,进行注册操作
  // ...
} else {
  // 验证失败,显示错误信息
  // ...
}
?>
  1. Limitez la vitesse d'enregistrement

Une autre caractéristique du. L'attaque de brushing d'enregistrement est Un grand nombre de demandes d'enregistrement sont envoyées en continu sur une courte période de temps. En limitant la vitesse d’enregistrement, nous pouvons effectivement ralentir l’impact de l’attaque.

Par exemple, vous pouvez enregistrer le nombre d'enregistrements pour chaque adresse IP au cours de la période récente et le limiter. Voici un exemple de code :

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$time_range = 60; // 限制时间范围(秒)
$max_register = 5; // 最大注册次数

// 从数据库或其他存储方式中获取IP地址相关的注册次数和时间戳
// ...

if($register_count >= $max_register) {
  $remaining_time = $time_range - (time() - $last_register_time);
  die("注册次数过多,请等待".$remaining_time."秒后再尝试。");
}

// 新增注册记录到数据库或其他存储方式
// ...
?>
  1. Exigences strictes en matière de mot de passe

L'un des objectifs des attaques par brossage d'enregistrement est d'obtenir un grand nombre de comptes d'utilisateurs à utiliser dans d'autres comportements malveillants. Pour empêcher l'utilisation de mots de passe simples, nous pouvons demander aux utilisateurs de définir des mots de passe forts.

Par exemple, nous pouvons exiger que le mot de passe ne comporte pas moins de 8 caractères et contienne des lettres majuscules et minuscules, des chiffres, des caractères spéciaux, etc. Voici un exemple de code :

<?php
$password = $_POST['password'];

if(strlen($password) < 8 || !preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[@#$%!^&*()-_=+{}~|/<>?]).*$/', $password)) {
  die("密码太弱,请选择更强的密码。");
}

// 注册用户并保存密码到数据库或其他存储方式
// ...
?>

Voici quelques bonnes pratiques pour prévenir les attaques d'enregistrement PHP. Nous pouvons choisir d'utiliser différentes méthodes d'implémentation en fonction des besoins et des situations spécifiques. En ajoutant des mesures telles que la vérification des interactions humaines, la limitation de la vitesse d'enregistrement et l'exigence de mots de passe forts, nous pouvons améliorer efficacement la sécurité de la fonction d'enregistrement et empêcher l'impact inapproprié des attaques par balayage d'enregistrement sur le serveur.

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