본문 바로가기
컴퓨터

👨‍💻 [SQL] SQL Injection 이란 무엇인가요?

by 밝음의기둥 2024. 10. 15.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

웹 방화벽 보고서 를 보다보니, SQL Injection 이란 말이 많이 나오더군요, 그래서, SQL Injection 이 무엇인지 찾아보았습니다.


질문 >

SQL Injection 이란 무엇인가요?

답변 >

SQL Injection(Structured Query Language Injection)은 공격자가 웹 애플리케이션의 데이터베이스를 조작하거나 악용하기 위해 악의적인 SQL 코드를 주입하는 공격 기법입니다. 이는 웹 애플리케이션이 사용자 입력을 제대로 검증하지 않고 SQL 쿼리에 포함시킬 때 발생합니다. SQL Injection을 성공적으로 수행하면 공격자는 데이터베이스에서 민감한 정보를 탈취하거나, 데이터베이스 내용을 삭제, 수정하거나, 심지어 관리자로 로그인할 수도 있습니다.

SQL Injection의 기본적인 원리는 웹 애플리케이션이 사용자로부터 입력받은 값을 그대로 SQL 쿼리에 사용하기 때문에 발생합니다. 공격자는 SQL 쿼리의 논리를 변경할 수 있는 특수한 SQL 명령을 입력하여 원하는 결과를 얻을 수 있습니다.

예시:

아래와 같은 로그인 쿼리가 있을 때:

SELECT * FROM users WHERE username = '사용자입력' AND password = '사용자입력';

공격자가 사용자입력에 ' OR '1'='1 과 같은 값을 넣으면, 쿼리는 다음과 같이 변경됩니다:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

이 경우 조건문이 항상 참이 되어, 공격자는 비밀번호를 몰라도 로그인에 성공할 수 있게 됩니다.

SQL Injection 방어 방법:

  1. 준비된 쿼리(Prepared Statements) 사용: SQL 문에 파라미터를 바인딩하는 방식으로 입력 값을 쿼리와 분리하여, 악의적인 SQL 코드가 실행되지 않도록 방지합니다.
  2. 입력값 검증 및 필터링: 사용자의 입력값을 검증하고 불필요한 문자를 필터링합니다.
  3. ORM(Object-Relational Mapping) 도구 사용: ORM을 사용하여 SQL 쿼리 생성을 추상화하면 직접 SQL 쿼리를 작성하지 않게 되어 안전성이 증가합니다.
  4. 최소 권한의 데이터베이스 사용자 사용: 데이터베이스 사용자의 권한을 최소화하여 공격자가 데이터베이스를 마음대로 조작할 수 없게 만듭니다.

SQL Injection은 매우 위험한 공격이므로, 이를 예방하기 위한 적절한 보안 대책을 강구하는 것이 중요합니다.


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

 

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com

 


반응형