관리 메뉴

웹개발자의 기지개

[PHP] 관리자페이지 접근 시도 제한 시키기 - 간단 코드 본문

PHP

[PHP] 관리자페이지 접근 시도 제한 시키기 - 간단 코드

웹개발자 워니 2025. 11. 2. 00:02

특히 관공서 보안 요청 사항중에 필수로 자주 등장하는 요청사항 중에 하나다.

관리자 페이지 접근 시도를 5회 이상일때 접근을 막도록 하는 간단한 코드내용이다.

 

1
2
3
4
5
6
7
8
9
CREATE TABLE IF NOT EXISTS `adminLogAttempt` (
  `no` int(11unsigned NOT NULL AUTO_INCREMENT,
  `ipc` varchar(30NOT NULL,
  `sid` varchar(50NOT NULL,
  `reg_date` int(10unsigned NOT NULL DEFAULT '0',
  `attempt_id` varchar(50NOT NULL,
  `attempt_pw` varchar(50NOT NULL,
  PRIMARY KEY (`no`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8;
cs

 

 

[관리자 로그인 처리페이지]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?
session_start();
 
$ipc = $_SERVER['REMOTE_ADDR'];
$sid = session_id();
$reg_date = time();
 
$admin_password = trim($_POST['admin_password']);
$admin_id        = trim($_POST['admin_id']);
 
if(!$admin_password || !$admin_id){
    error("아이디/패스워드를 작성해주세요");
    exit;
}
 
//------- 5회 이상 실패시 관리자 로직 시작 ----------------
$query = "select * from adminLogAttempt where sid='$sid' order by no DESC limit 1";
$res3   = mysqli_query($connect,$query) or die("select Error 1");
$row   = mysqli_fetch_array($res3);
 
if ($row[no]) {
    
    $query = "select count(*) AS logCnt from adminLogAttempt where sid='$sid'";
    $aRes  = mysqli_query($connect,$query) or die("select Error 2");
    $aRow  = mysqli_fetch_array($aRes);
    $logCnt = $aRow['logCnt'];
 
    if ($logCnt >= 5) {
        echo "<script language='javascript'>alert('로그인 시도 횟수 5번을 초과하셨습니다.\\n\\n계속 진행하시려면 053-111-2222 로 문의해 주시기 바랍니다.');location.href='/';</script>";
        exit;
    }
}
 
 
if (로그인 성공시) { // 관리자 로그인 성공시
    
.......    
    
else {    // 관리자 로그인 실패시
    
 
    //--------------- 관리자 접근 실패 insert-------------------------------------------------
    $query = "insert into adminLogAttempt (ipc,sid,reg_date,attempt_id,attempt_pw) values ('$ipc','$sid','$reg_date','".$admin_id."','".$admin_password."')";
    mysqli_query($connect,$query) or die("select Error 3");
 
    
}
?>
cs

 

 

 

Comments