
웹취약점 점검에서 개발한 웹에 대하여 점검을 진행하였고, 여러 취약점들을 발견하였다.
발견한 취약점들을 대상으로 시큐어 코딩을 진행하고자 한다.
이번 대상은 주요정보통신기반시설 분석·평가 가이드 19번 항목 - 세션 고정 이다.
세션 고정 취약점이 발견된 항목은 다음과 같다.
| URL | 파라미터 | 메뉴 |
|---|---|---|
| http://jmseok.com/web/auth/login_proc.php | - | 로그인 |
로그인 등의 인증 상태가 변경되는 시점에, 새로운 세션ID를 받급하고 기존 세션ID를 폐기한다.
(기존)
//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>";
}
(수정 후)
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 할당 확인 |