입력 검증·토큰 인증·SQL인젝션 방지로 게임 서버 보안 이슈 대응결
게임 서버 개발에서 발생하는 주요 보안 이슈는 입력 검증 부재에서 시작되는 경우가 많습니다. 클라이언트에서 오는 데이터를 서버가 그대로 믿으면, 조작된 요청으로 아이템이나 재화를 임의로 획득하는 공격이 가능해집니다.
학교 프로젝트 서버를 구성할 때, 처음에는 클라이언트에서 보낸 점수를 그대로 기록하다가 테스터가 임의로 높은 점수를 제출하는 것을 발견했습니다. 이후 서버에서 독립적으로 게임 로직을 재검증하고, 클라이언트 데이터와 차이가 나면 거부하는 방식으로 수정했습니다.
SQL 인젝션과 JWT 토큰 만료 처리도 중요한 보안 항목입니다. ORM을 쓰면 SQL 인젝션을 상당 부분 막을 수 있고, 액세스 토큰은 짧은 만료 시간을 설정해 탈취 시 피해를 줄이는 방식을 씁니다. 보안은 기능이 완성된 뒤 추가하는 것이 아니라 설계 단계에서 포함해야 한다는 것을 배웠습니다.