보안

SQL Injection과 방지 방법

♠디지털 모험일지♠ 2024. 12. 5. 10:48
728x90
반응형
SMALL

구체적인 사례

  1. 로그인 시스템의 취약점 이용
    일반적으로 사용자가 로그인할 때, 입력한 사용자 이름과 비밀번호는 다음과 같은 SQL 쿼리로 데이터베이스에 전달됩니다:

    SELECT * FROM users WHERE username = '입력한_사용자이름' AND password = '입력한_비밀번호';
  2. 악의적인 입력값 삽입
    공격자가 로그인 입력창에 다음과 같은 값을 넣습니다:

    bash코드 복사사용자 이름: ' OR '1'='1
    비밀번호: 아무 값

    SQL 쿼리는 이렇게 바뀝니다:

    SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
  3. SQL Injection 효과
    쿼리를 해석하면 OR '1'='1'은 항상 참(True)이기 때문에, 데이터베이스는 인증 없이 모든 사용자 정보를 반환합니다. 결과적으로, 공격자는 로그인 없이도 시스템에 접근할 수 있습니다.


방지 방법

  1. 파라미터화된 쿼리 사용: SQL 쿼리에 입력값이 바로 들어가지 않도록 처리.
  2. 입력값 검증: 입력값에 금지된 문자(', -- 등)가 있는지 확인.
  3. 최소 권한 설정: 데이터베이스 계정의 권한을 최소화하여 데이터 유출을 방지.
반응형
SMALL