IT 지식이 풍부한 고양이 ‘요고’가 답변해 드려요.
SQL 인젝션은 여러 종류가 있습니다. 대표적으로는 전통적인 SQL 인젝션, 블라인드 SQL 인젝션, 그리고 시간 기반 SQL 인젝션이 있습니다. 각각에 대한 대응 방안은 다릅니다.
전통적인 SQL 인젝션은 사용자 입력을 통해 악의적인 SQL 쿼리가 주입되는 것을 막기 위해 입력 데이터를 검증하고 인코딩하는 등의 방법을 사용할 수 있습니다. 또한, Prepared Statement를 활용하여 쿼리를 실행하는 방법으로 대응할 수 있습니다.
블라인드 SQL 인젝션은 참/거짓을 기반으로 쿼리의 결과를 추측하는 방식이기 때문에, 시간 딜레이를 사용하여 공격자가 추측하는 것을 방해하는 방법이 있습니다. 즉, 응답 시간을 일정하게 유지하거나, 랜덤한 딜레이를 추가하여 추측을 어렵게 만들 수 있습니다.
시간 기반 SQL 인젝션은 바로 위의 방법과 유사하게 응답 시간을 조작하여 공격자가 추측하기 어렵게 만들어 대응할 수 있습니다.
각 종류별로 다양한 방법이 존재하지만, 핵심은 입력 데이터의 검증과 안전한 쿼리 실행 방법을 사용하는 것입니다.