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