ホームページ  >  記事  >  バックエンド開発  >  PHP での登録攻撃を防ぐためのベスト プラクティス

PHP での登録攻撃を防ぐためのベスト プラクティス

王林
王林オリジナル
2023-08-26 23:43:45633ブラウズ

PHP での登録攻撃を防ぐためのベスト プラクティス

PHP アンチフラッシュ登録攻撃のベスト プラクティス

インターネットの発展に伴い、さまざまな Web サイトやアプリケーションで登録機能がますます一般的になってきています。しかし同時に、登録機能は攻撃者によって悪用されることが多い侵入ポイントにもなっています。その中で最も一般的な攻撃方法は、登録およびアカウント スワイプ攻撃です。つまり、攻撃者は自動化されたプログラムを通じて大量の登録要求を行い、サーバー リソースを占有し、通常のサービスを中断します。この攻撃に対抗するために、登録機能を保護するために採用できるベスト プラクティスがいくつかあります。

  1. アンチヒューマン インタラクション検証の追加

一般的な登録ブラッシング攻撃は、自動化されたプログラムを使用して登録リクエストを行うことを特徴としています。これらのプログラムは通常、すべての登録プロセスを迅速に完了します。完了するには、一定の時間と実際のユーザーとの対話が必要です。自動登録は、対人的相互作用の検証を追加することで効果的に防止できます。確認コードの入力、スライダーのドラッグ、電話番号の確認などはすべて、人為的行為を防止する一般的な確認方法です。

たとえば、Google reCAPTCHA を使用して確認コード検証を追加できます。まず、Google reCAPTCHA公式サイト(https://www.google.com/recaptcha/intro/v3.html)にアカウントを登録し、対応するAPIキーを取得します。次に、以下に示すように、登録ページに reCAPTCHA 検証コードを埋め込みます。

<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>

サーバー側で reCAPTCHA 応答を検証します。サンプル コードは次のとおりです。

<?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. Limit登録速度

登録ブラッシング攻撃のもう 1 つの特徴は、短期間に大量の登録リクエストが連続して送信されることです。登録速度を制限することで、攻撃の影響を効果的に遅らせることができます。

たとえば、最近の期間における各 IP アドレスの登録数を記録し、制限することができます。以下はサンプル コードです:

<?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. 強力なパスワード要件

登録ブラッシング攻撃の目的の 1 つは、他の目的で使用する多数のユーザー アカウントを取得することです。悪意のある行為。単純なパスワードの使用を防ぐために、ユーザーに強力なパスワードの設定を要求できます。

たとえば、パスワードの長さが 8 文字以上で、大文字、小文字、数字、特殊文字などが含まれることを要求できます。以下はサンプル コードです:

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

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

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

上記は、PHP 登録攻撃を防ぐためのベスト プラクティスです。特定のニーズや状況に応じて、さまざまな実装方法を使用することを選択できます。人的介入防止の検証、登録速度の制限、強力なパスワードの要求などの対策を追加することで、登録機能のセキュリティを効果的に向上させ、サーバーに対する登録スワイピング攻撃の不適切な影響を防ぐことができます。

以上がPHP での登録攻撃を防ぐためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。