PHP에서 로그인 실패 횟수를 제한하는 방법: 1. 사용자 로그인 정보를 기록하는 테이블 만들기 2. 잘못된 비밀번호 기록 보기 3. 동일한 IP에서 동일한 사용자에 대한 잘못된 비밀번호 수는 30개 이내입니다. 분 설정된 오류 횟수에 도달하면 사용자는 로그인이 허용되지 않습니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP는 로그인 실패 횟수에 제한을 적용합니다.
잘못된 로그인 비밀번호 수에 대한 제한
모두에게 안전합니다. 웹사이트의 중요성은 자명합니다.
그 중 로그인은 웹사이트에서 공격에 더욱 취약한 부분인데, 로그인 기능의 보안을 어떻게 강화할 수 있을까요? 安全对每个网站的重要性,不言自明。
其中,登陆又是网站中比较容易受到攻击的一个地方,那么我们如何对登陆功能的安全性加强呢?
我们先来看一些知名的网站是如何做的
Github
Github网站同一个账号在同一个IP地址连续密码输错一定次数后,这个账号是会被锁定30分钟的。
Github这么做的主要原因,我觉得主要基于以下考虑:
既然这么多网站的登陆功能都这么个功能,那么具体如何实现的。下面,就具体说说。
思路
需要一个表(user_login_info
)负责记录用户登录的信息,不管登录成功还是失败都记录。并且登陆失败还是成功需要能够区分开来。
每次登陆时,都先从user_login_info表
Github🎜
Github 웹사이트의 동일한 계정이 동일한 IP 주소에 일정 횟수 연속 잘못된 비밀번호를 입력하면 해당 계정이 30분 동안 잠깁니다. 🎜
🎜🎜🎜Github이 이렇게 하는 주된 이유는 주로 다음과 같은 점에 근거한 것 같습니다. 고려 사항: 🎜
아이디어 🎜
테이블이 필요합니다(user_login_info
)는 로그인 여부에 관계없이 사용자 로그인 정보를 기록합니다. 성공 또는 실패 모두 기록되었습니다. 그리고 로그인이 실패했는지, 성공했는지 구별할 수 있어야 합니다. 🎜
로그인할 때마다 user_login_info 테이블
최근 30분 동안(비밀번호 오류 횟수가 5회 도달 후 30분간 사용자 정지가 된다고 가정), 관련 비밀번호 오류 기록이 있습니까? 그러면 총 기록 수가 설정한 횟수에 도달했는지 계산합니다. 오류. 🎜
user_login_info表
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;
user表(用户表)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!