15. 보기는 공격자에 의해 웹사이트가 공격당하고 있는 상황이다. 공격 상황과 관련하여 물음에 답변하시오.
ㅇ 공격자가 브라우저에 아래와 같은 URL을 입력하자 화면에 '1'이라는 숫자가 출력되었다. http://q.fran.kr/view.php?no=1 union select(substr(database(), 0, 1)) = 't' 1) 무슨 공격인지 쓰시오. 2) 위 공격을 통해 공격자가 취할 수 있는 정보를 쓰시오. 3) 관리자가 HTML코드를 수정하여 '1'이 출력되지 않도록 조치하였다. 이 조치법의 문제점을 서술하고 대응방안을 제시하시오.
정답 확인 | 맞췄어요 O | 틀렸어요 X |
2) 데이터베이스 명을 파악할 수 있다. 위 공격을 통해 데이터베이스의 첫글자가 t라는 것을 알 수 있으며, 유사한 공격을 반복하여 전체 데이터베이스 명을 알아낼 수 있다.
3) 웹페이지 HTML 수정을 통해 특정 출력필드를 숨기더라도 SQL Injection이 동작 하는한 다른 페이지에도 동일한 공격이 가능할 확률이 높다. 그리고 보여지는게 완벽히 차단 되었더라도 내부적으로 악영향을 주는 쿼리문을 실행하는 것은 여전히 가능하다.
HTML을 변경하는 것 보다는 prepared statement를 이용하여 SQL Injection 공격을 원천 차단해야 한다.