[8. 세션 고정]

Minseok Jo·2026년 8월 26일

웹 시큐어코딩

목록 보기
8/11
post-thumbnail

웹취약점 점검에서 개발한 웹에 대하여 점검을 진행하였고, 여러 취약점들을 발견하였다.
발견한 취약점들을 대상으로 시큐어 코딩을 진행하고자 한다.

이번 대상은 주요정보통신기반시설 분석·평가 가이드 19번 항목 - 세션 고정 이다.

세션 고정 취약점이 발견된 항목은 다음과 같다.

URL파라미터메뉴
http://jmseok.com/web/auth/login_proc.php-로그인

0. 세션 고정 대응 방안

로그인 등의 인증 상태가 변경되는 시점에, 새로운 세션ID를 받급하고 기존 세션ID를 폐기한다.


1. 시큐어 코딩

[1. 로그인 처리 페이지]

(기존)

//login_proc.php
if ($input_pw == $db_pass) {
    session_start();
    $_SESSION["user_id"] = $row["user_id"];
    $_SESSION["user_name"] = $row["user_name"];

    echo "<script>
        alert('로그인 완료');
        location.href='../main/index.php';
    </script>";
}
  • 로그인 성공 후 세션 ID 재발급 없이, 기존 PHPSESSID에 로그인 정보를 추가하고 있음

(수정 후)

if ($input_pw == $db_pass) {
    session_start();
    session_regenerate_id(true);

    $_SESSION["user_id"] = $db_user_id;
    $_SESSION["user_name"] = $db_user_name;

    echo "<script>
        alert('로그인 완료');
        location.href='../main/index.php';
    </script>";
}

session_regenerate_id(true);

  • 로그인 시, 새로운 세션 ID를 발급하면서 기존 세션 데이터를 삭제


2. 보안 조치 결과

세션 고정
▲ 재로그인 시, 새로운 세션ID 할당 확인


0개의 댓글