ホームページ  >  記事  >  バックエンド開発  >  PHP でログイン失敗の回数を制限する方法

PHP でログイン失敗の回数を制限する方法

藏色散人
藏色散人オリジナル
2022-01-12 10:27:073609ブラウズ

ログイン失敗回数を制限する

php メソッド: 1. ユーザーのログイン情報を記録するテーブルを作成します; 2. 間違ったパスワードの記録を確認します; 3. 同じ IP の下で、同じユーザーが 2 回以内にログインします30分間、パスワードを間違えた回数が設定回数に達すると、ユーザーはログインできなくなります。

PHP でログイン失敗の回数を制限する方法


この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター

PHP は実現しますログイン失敗回数の制限

間違ったログイン パスワードの回数を制限

すべての Web サイトにとってセキュリティの重要性は自明のことです。 中でもログインはWebサイト内でより攻撃を受​​けやすい箇所ですが、ログイン機能のセキュリティを強化するにはどうすればよいでしょうか?

まず、いくつかの有名な Web サイトがどのように行うかを見てみましょう

  • Github

    Github Web サイト上の同じアカウントは、同じ IP アドレスを使用して、パスワードを連続して入力すると、一定回数間違えるとアカウントが30分間ロックされます。


  • Github がこれを行う主な理由は、主に次の考慮事項に基づいていると思います。ユーザーのアカウントのパスワードをブルートフォースクラッキングから守る

    1. 実装アイデア
    非常に多くのWebサイトのログイン機能にこの機能があるので、具体的にどのように実装するか。以下で詳しく説明しましょう。

    アイデア
    • ログインが成功したか失敗したかにかかわらず、ユーザーのログイン情報を記録するテーブル (
        user_login_info
      1. ) が必要です。 記録。また、ログインが失敗したか成功したかを区別できる必要があります。

        ログインするたびに、最初に
      2. user_login_info テーブル
      3. に過去 30 分間クエリを実行します (ここでは、間違ったパスワードの回数が 5 回に達した後、ユーザーが30 分間無効になります) 関連するパスワードエラーの記録がない場合、レコードの総数が設定されたエラー数に達するかどうかをカウントします。

      1. 同じ IP の同じユーザーが 30 分以内に間違ったパスワードの回数が設定された回数に達すると、そのユーザーはログインできなくなります。
    #特定のコードとテーブルの設計

      テーブル設計

    user_login_info テーブルrreee

    ユーザー テーブル (ユーザー テーブル)

       CREATE TABLE `user_login_info` (
           `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT  NOT NULL,
           `uid` int(10) UNSIGNED NOT NULL,
           `ipaddr` int(10) UNSIGNED NOT NULL COMMENT '用户登陆IP',
           `logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
           COMMENT '用户登陆时间',
           `pass_wrong_time_status` tinyint(10) UNSIGNED NOT NULL COMMENT '登陆密码错误状态' 
           COMMENT '0 正确 2错误'
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      コアコード
       CREATE TABLE `user` (
          `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
          `name` varchar(100) NOT NULL COMMENT '用户名',
          `email` varchar(100) NOT NULL,
          `pass` varchar(255) NOT NULL,
          `status` tinyint(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '1启用 2禁用',
           PRIMARY key(id)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    推奨される学習: 「
PHP ビデオ チュートリアル

以上がPHP でログイン失敗の回数を制限する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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