로그인? 이후 관리자 페이지 접속 에러 문의

로그인? 이후 관리자 페이지 접속 에러 문의

QA

로그인? 이후 관리자 페이지 접속 에러 문의

답변 3

본문

사정상 '홈피주소/?root=admin' 이라고 접속하면 최고관리자 admin이라는 id로 접속을 하게 하려고 해봤는데요.

로그인은 됐지만 '관리자 페이지'에 들어가려면 '정상적으로 로그인하여 접근하시기 바랍니다.'라는 메세지가 뜨네요

 

코드는 index.php에서


<?php
if (!defined('_GNUBOARD_')) exit;
include_once('./_common.php');
if( isset($_GET['root']) ) set_session('root', $_GET['root']);
if( $_GET['root'] != 'admin' ) {
    // 로그인 확인
    if(!$member['mb_id']) {alert("로그인이 필요한 서비스입니다.", G5_BBS_URL.'/login.php');}
} else {
    // 회원아이디 세션 생성
    set_session('ss_mb_id','admin');
    // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
    set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
}

 

방법좀 부탁드리겠습니다.

이 질문에 댓글 쓰기 :

답변 3

$mb['mb_datetime'] <== 이 값이 어디에도 없잖아요. 그러니 안되죠

// 회원아이디 세션 생성 <==다음에 넣으세요

$mb=get_member('admin', 'mb_datetime');

 

그런데 저런 처리가 무슨 의미가 있나요?

아무나 ?root=admin 으로 접속해버리면 관리자가 되어버리는데

전 세계 로봇이나 이상한 프로그램을 돌려서 홈페이지에 로그인 하기 위하여 

무작위로 아이디를 넣어서 접속해오는 로그를 못 보셨나보네요 

저런 것은 홈페이지 금방 사달 납니다

 

최소한 IP를 체크해서 지정한 IP만 관리자로 로그인 되는 조치가 필요합니다

 

 

 

 

 

균이님 말씀 맞습니다.
지금은 이런저런 상황에 맞는 로그인 페이지를 만들다가
관리자페이지를 접근해야 할 필요가 있는데  이것때문에 로그인 페이지를 따로 두기 뭣해서 이런 생각을 했던거에요.

균이님 답변대로 하니 잘 동작합니다. 감사합니다.

아래의 코드들을 참고를 해보세요..

 

<?php
if (!defined('_GNUBOARD_')) exit;
include_once('./_common.php');

if (isset($_GET['root']) && $_GET['root'] === 'admin') {
    $admin_id = 'admin';
    
    // 최고관리자 계정 정보를 가져옵니다
    $sql = "SELECT * FROM {$g5['member_table']} WHERE mb_id = '{$admin_id}'";
    $admin = sql_fetch($sql);

    if ($admin) {
        // 회원아이디 세션 생성
        set_session('ss_mb_id', $admin['mb_id']);
        // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
        set_session('ss_mb_key', md5($admin['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
        
        // 관리자 페이지로 리다이렉트
        header('Location: ' . G5_ADMIN_URL);
        exit;
    } else {
        alert("관리자 계정이 존재하지 않습니다.");
    }
} else {
    // 로그인 확인
    if (!$member['mb_id']) {
        alert("로그인이 필요한 서비스입니다.", G5_BBS_URL.'/login.php');
    }
}
?>
 

 

#######################################################

 

 

 

<?php
if (!defined('_GNUBOARD_')) exit;
include_once('./_common.php');

if(isset($_GET['root']) && $_GET['root'] == 'admin') {
    $mb = get_member('admin');
    if ($mb) {
        // 회원아이디 세션 생성
        set_session('ss_mb_id', $mb['mb_id']);
        
        // 회원인증 세션 생성
        set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
        
        // 추가 세션 정보 설정
        set_session('ss_mb_name', $mb['mb_name']);
        set_session('ss_mb_nick', $mb['mb_nick']);
        set_session('ss_mb_level', $mb['mb_level']);
        set_session('ss_mb_point', $mb['mb_point']);
        
        // 자동로그인 쿠키 설정
        $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
        set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
        set_cookie('ck_auto', $key, 86400 * 31);
    }
} else {
    // 로그인 확인
    if(!$member['mb_id']) {
        alert("로그인이 필요한 서비스입니다.", G5_BBS_URL.'/login.php');
    }
}

 

 

다음 코드가 도움이 될지 모르겠습니다.


<?php
if (!defined('_GNUBOARD_')) exit;
include_once('./_common.php');
if( isset($_GET['root']) ) set_session('root', $_GET['root']);
if( $_GET['root'] != 'admin' ) {
    // 로그인 확인
    if(!$member['mb_id']) {alert("로그인이 필요한 서비스입니다.", G5_BBS_URL.'/login.php');}
} else {
    $mb = get_member('admin');

    // 회원아이디 세션 생성
    set_session('ss_mb_id','admin');
    // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
    set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
 
    // 회원의 토큰키를 세션에 저장한다. /common.php 에서 해당 회원의 토큰값을 검사한다.
    if(function_exists('update_auth_session_token')) update_auth_session_token($mb['mb_datetime']);
}
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,178
© SIRSOFT
현재 페이지 제일 처음으로