정보 보안 기초
웹 애플리케이션에서 로그인한 상태의 이용자가 공격자가 준비한 함정 페이지를 열면, 이용자의 브라우저에서 정규 사이트로 이용자가 의도하지 않은 송금이나 설정 변경 요청이 보내지는 취약점이 있다. 이 취약점에 대한 대책으로 적절한 것은?
- A중요한 처리의 폼에 세션마다 추측할 수 없는 무작위 값(토큰)을 넣어 두고, 요청을 받았을 때 그 값이 올바른지 확인한다
- B비밀번호 입력란의 글자 수 상한을 크게 한다
- C웹 서버의 로그를 매일 백업한다
정답과 해설 보기
정답: A. 중요한 처리의 폼에 세션마다 추측할 수 없는 무작위 값(토큰)을 넣어 두고, 요청을 받았을 때 그 값이 올바른지 확인한다
이 취약점은 크로스 사이트 요청 위조(CSRF)라고 합니다. 브라우저는 정규 사이트로 가는 요청에는 어느 페이지에서 보낸 것이든 그 사이트의 Cookie(로그인한 세션 정보)를 자동으로 붙여 보냅니다. 그래서 서버가 Cookie만으로 로그인 중인 이용자의 올바른 조작이라고 판단하고 있으면, 함정 페이지에서 보내게 한 요청도 받아들여 버립니다. 대책의 기본은 정규 폼에만 세션마다 추측할 수 없는 무작위 값(CSRF 토큰)을 넣어 두고, 서버에서 그 값을 확인하는 것입니다. 함정 페이지는 이 값을 알 수 없으므로 올바른 요청을 만들 수 없습니다. 나아가 Cookie의 SameSite 속성으로 다른 사이트에서 보낸 요청에 Cookie를 붙이지 않게 하거나, 송금 같은 중요한 조작 전에 비밀번호를 다시 입력하게 하는 대책도 있습니다. XSS가 사이트에 부정한 스크립트를 삽입하는 것인 데 비해, CSRF는 이용자의 브라우저가 정규로 보이는 요청을 보내게 한다는 점이 다릅니다.