정보 보안 기초

로그인 화면에서 비밀번호 칸에 ' OR '1'='1 같은 문자열을 입력하면 비밀번호를 몰라도 로그인할 수 있게 되는 웹 애플리케이션이 있다. 이 공격의 이름은?

  1. ASQL 인젝션
  2. B크로스 사이트 스크립팅
  3. C디렉터리 트래버설
정답과 해설 보기

정답: A. SQL 인젝션

SQL 인젝션은 웹 애플리케이션이 이용자의 입력을 그대로 문자열로 이어 붙여 데이터베이스에 대한 명령(SQL 문)을 조립하고 있다는 점을 악용하는 공격입니다. 예를 들어 '비밀번호가 '입력값'과 같다'는 조건을 만드는 곳에 ' OR '1'='1이 들어가면, 따옴표로 문자열이 닫히고 '또는 '1'과 '1'이 같다'는 항상 성립하는 조건이 덧붙여져 버립니다. 그 결과 비밀번호를 몰라도 조건이 성립하여 로그인할 수 있게 됩니다. 같은 방법으로 데이터의 탈취나 변경, 삭제가 이루어질 우려도 있습니다. 근본적인 대책은 입력을 명령의 일부로 해석시키지 않는 구조(플레이스홀더를 사용하는 프리페어드 스테이트먼트)를 사용하는 것입니다.

이 분야 연습하기 분야로 돌아가기

정보 보안 기초의 다른 문제

  1. SQL 인젝션 대책으로서 플레이스홀더를 사용하는 프리페어드 스테이트먼트(매개변수화 쿼리)가, 입력 안의 위험한 문자를 제거하는 방법보다 근본적인 대책으로 여겨지는 이유로 올바른 것은?
  2. 게시판 웹 애플리케이션에서 이용자가 게시한 글 안의 스크립트가 다른 열람자의 브라우저에서 실행되어 버리는 취약점이 있었다. 이 취약점의 이름과 근본적인 대책의 조합으로 올바른 것은?
  3. 웹 애플리케이션에서 로그인한 상태의 이용자가 공격자가 준비한 함정 페이지를 열면, 이용자의 브라우저에서 정규 사이트로 이용자가 의도하지 않은 송금이나 설정 변경 요청이 보내지는 취약점이 있다. 이 취약점에 대한 대책으로 적절한 것은?
  4. 웹 애플리케이션이 URL 매개변수로 지정된 파일 이름을 공개용 폴더의 이름과 이어 붙여 읽어 들여 표시하고 있다. 파일 이름에 ../를 포함한 값을 지정하면 공개용 폴더 밖에 있는 설정 파일 등을 읽어 낼 수 있게 된다. 이 공격의 이름과 대책의 조합으로 올바른 것은?
  5. 웹 애플리케이션에서 로그인 전과 후에 같은 세션 ID를 계속 사용하면, 공격자가 미리 준비한 세션 ID를 이용자가 사용하게 하고, 이용자가 로그인한 뒤 그 ID로 이용자를 사칭할 우려가 있다. 이 공격에 대한 대책으로 가장 적절한 것은?