관리자 로그인 페이지를 구현하기 위해 작성하였습니다. 간단한 페이지라도 다른 사람들의 접근을 차단해야 할 때가 종종 있습니다. 이때 비밀번호 설정 시 소스 코드에 비밀번호를 직접 노출하지 않고, 해시 처리를 통해 변형된 형태로 입력합니다. 비밀번호 해시 파일은 생성 후 삭제하는 것을 권장합니다.
Hassed password 생성 파일 예
<?php
$password = ""; // 이곳에 사용 할 비밀번호를 입력 후 웹에서 실행 하면 됩니다.
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
echo $hashed_password;
?>
관리자 로그인 페이지 구현 소스
<?php
// 기본 인증 구현
function authenticate() {
$username = 'admin'; // 관리자 아이디
$hashed_password = '$pqPcLtqUUNgemhGdGyFqx6'; // 관리자 비밀번호(변형 후 입력)
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
$_SERVER['PHP_AUTH_USER'] !== $username ||
!password_verify($_SERVER['PHP_AUTH_PW'], $hashed_password)) {
header('WWW-Authenticate: Basic realm="Restricted Area"');
header('HTTP/1.0 401 Unauthorized');
echo '인증에 실패했습니다.';
exit;
}
}
$allowed_ips = ['123.123.123.123', '111.111.111.111']; // 등록 된 아이피로 접근 시 로그인 생략
$is_allowed_ip = in_array($_SERVER['REMOTE_ADDR'], $allowed_ips);
if (!$is_allowed_ip) {
authenticate();
}
내 생각
관리자 로그인 페이지 구현 코드를 보면서, 아무리 사소한 페이지라도 웹에 노출되어 다른 사람들에게 민감한 정보가 노출되는 것은 바람직하지 않습니다. 개인정보 및 관리자만 접근이 필요한 페이지에는 반드시 최소한 위와 같은 보안 접근 방법을 적용해야 합니다.
본 게시물은 관리자에 의해 “코딩&웹” 카테고리로 분류되었습니다.