설명
세션 또는 인증 토큰을 증가값, uniqid, rand, mt_rand 등으로 만들면 공격자가 값을 예측할 수 있습니다.
잠재적 영향
세션 탈취, 인증 우회, 계정 가장이 가능합니다.
해결 방법
토큰은 random_bytes 또는 PHP 세션 관리의 안전한 난수를 사용해 생성합니다.
예시
아래는 HTTPS 환경의 쿠키 값 생성 부분입니다. 토큰을 인증된 사용자와 연결하는 서버 측 저장·검증, 만료 및 폐기 처리는 별도로 구현해야 합니다.
변경 전
php
<?php
$_SESSION['last_session_id']++;
setcookie('session', $_SESSION['last_session_id']);
변경 후
php
<?php
setcookie('session', bin2hex(random_bytes(32)), [
'httponly' => true,
'secure' => true,
'samesite' => 'Lax',
]);
설명:
- 변경 전: 세션 또는 인증 토큰이 예측 가능한 값에서 생성됩니다.
- 변경 후: 토큰은
random_bytes또는 PHP 세션 관리의 안전한 난수를 사용해 생성합니다.