
후배가 커밋해놓은 서버 사이드 코드에서 세션 관리 시에 전역 변수가 잘못 들어가 있는 것을 발견했다.
어쩐지 세션 상태가 오락가락 하더라...
간단한 예시를 들면
// 전역 변수로 사용자 세션 정보 관리 (잘못된 방법)
let currentUserSession: any = null;
export async function authenticate(req: Request, res: Response) {
const { username, password } = req.body;
// 인증 로직
if (username === "admin" && password === "password123") {
currentUserSession = { username, role: "admin", timestamp: Date.now() }; // 세션 생성
res.status(200).json({ message: "Authentication successful", session: currentUserSession });
} else {
res.status(401).json({ message: "Invalid credentials" });
}
}
export async function getProfile(req: Request, res: Response) {
// 세션 확인
if (!currentUserSession) {
res.status(401).json({ message: "Unauthorized" });
return;
}
res.status(200).json({ profile: currentUserSession });
}
위와 같은 코드에서는 무슨 일이 발생하느냐,
개발 환경에서는 충분히 발생할 수 있는 문제기에 구두로만 주의를 주고 끝냈다.
전역 변수를 써야겠다 싶은 데이터는 정적인 데이터(Secret_key, priv_key, version, env_path 등등..) 반드시 읽기 전용으로 사용되는 값만 사용해야 한다!
부디 다음부터는 신경써다오...