PHP에서 로그인 기능을 만들고 있는데, 세션과 쿠키 중 어떤 걸 사용해야 하는지 헷갈립니다. 두 개의 차이점이 뭔가요? 로그인 유지에는 뭘 써야 하나요? 보안 측면에서도 궁금합니다.
댓글 3
- 클라이언트(브라우저)에 저장
- 사용자가 수정 가능 (보안 취약)
- 만료 기간 설정 가능
- 최대 4KB
**세션 (Session)**
- 서버에 저장
- 사용자가 직접 수정 불가
- 브라우저 종료 시 기본 만료
- 용량 제한 없음 (서버 메모리)
**로그인 처리 방법:**
```php
// 로그인 시
session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['name'];
// 로그인 유지 (자동 로그인)
if ($remember) {
$token = bin2hex(random_bytes(32));
setcookie('remember_token', $token, time()+60*60*24*30, '/');
// DB에 토큰 저장
}
```
로그인 인증 자체는 세션, 자동 로그인(로그인 유지)은 쿠키에 안전한 토큰을 저장하는 방식을 씁니다.