패스잇
보안 · 기초

SQL Injection 공격이란 무엇이며, 어떻게 예방할 수 있나요?

힌트 · Prepared Statement, ORM 사용, 입력값 검증의 중요성을 설명해보세요.

SQL InjectionPrepared StatementParameter Binding입력 값 검증최소 권한 원칙

모범답안

SQL Injection은 웹 애플리케이션의 보안 취약점 중 하나로, 사용자가 입력한 값을 제대로 검증하지 않고 SQL 쿼리에 포함시켜 데이터베이스를 공격하는 방식입니다. 공격자는 악의적인 SQL 코드를 삽입하여 데이터베이스의 정보를 탈취하거나 변조, 심지어 삭제까지 할 수 있습니다.

SQL Injection을 예방하는 가장 효과적인 방법은 Prepared Statement를 사용하는 것입니다. Prepared Statement는 SQL 쿼리의 구조와 데이터를 분리하여, 사용자 입력 값을 쿼리 문자열이 아닌 파라미터로 전달합니다. 이렇게 하면 입력 값이 SQL 코드로 해석될 가능성을 원천적으로 차단할 수 있습니다.

ORM(Object-Relational Mapping) 프레임워크를 사용하는 것도 좋은 방법입니다. ORM은 데이터베이스 쿼리를 직접 작성하는 대신 객체 지향적인 방식으로 데이터베이스를 다루도록 도와주므로, SQL Injection 공격의 위험을 줄여줍니다.

또한, 사용자 입력 값에 대한 철저한 검증은 필수적입니다. 허용된 문자만 사용하도록 제한하거나, 특수 문자를 필터링하는 등의 방법을 통해 악의적인 입력 값을 차단해야 합니다. 데이터베이스 계정에 필요한 최소한의 권한만 부여하는 것도 SQL Injection 공격으로 인한 피해를 최소화하는 데 도움이 됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 웹 보안 면접 질문

← 웹 보안 면접 질문 전체 보기