Web

SQL injection

필립 2024. 6. 8. 23:38

SQL injection은 웹 애플리케이션의 보안 취약점을 악용하여 악의적인 SQL 쿼리를 데이터베이스에 전송하는 공격 기법이다. 

이를 통해 공격자는 데이터베이스의 중요 정보를 탈취하거나 조작할 수 있다.

SQL Injection의 원리

공격자는 웹 애플리케이션의 사용자 입력 부분에 악의적인 SQL 쿼리를 삽입한다. 이 쿼리는 개발자가 의도하지 않은 방식으로 

데이터베이스에 전달되어 실행된다. 예를 들어 로그인 페이지에서 다음과 같은 쿼리가 사용된다면, 

SELECT * FROM users WHERE username='$username' AND password='$password'

공격자가 username에 'OR 1=1'을 입력하면 쿼리는 다음과 같이 변형된다. 

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

1=1은 항상 참이므로 이 쿼리는 users 테이블의 모든 레코드를 반환하게 된다. 

SQL Injection 방지 방법

  • 사용자 입력값을 그대로 쿼리에 삽입하지 말고 입력값을 적절히 필터링하거나 이스케이프 처리한다.
  • Prepared Statements를 사용하여 쿼리와 입력값을 분리한다. 
  • 최소한의 데이터베이스 권한만 부여하여 피해를 최소화한다

'Web' 카테고리의 다른 글

디버거  (1) 2024.06.10
우분투란 ?  (0) 2024.06.09
Git Rebase, Merge  (0) 2024.06.05
CDN  (0) 2024.06.04
스프레드 연산자  (0) 2024.06.03