728x90
반응형
SMALL
구체적인 사례
로그인 시스템의 취약점 이용
일반적으로 사용자가 로그인할 때, 입력한 사용자 이름과 비밀번호는 다음과 같은 SQL 쿼리로 데이터베이스에 전달됩니다:SELECT * FROM users WHERE username = '입력한_사용자이름' AND password = '입력한_비밀번호';
악의적인 입력값 삽입
공격자가 로그인 입력창에 다음과 같은 값을 넣습니다:bash코드 복사사용자 이름: ' OR '1'='1 비밀번호: 아무 값
SQL 쿼리는 이렇게 바뀝니다:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
SQL Injection 효과
쿼리를 해석하면OR '1'='1'
은 항상 참(True)이기 때문에, 데이터베이스는 인증 없이 모든 사용자 정보를 반환합니다. 결과적으로, 공격자는 로그인 없이도 시스템에 접근할 수 있습니다.
방지 방법
- 파라미터화된 쿼리 사용: SQL 쿼리에 입력값이 바로 들어가지 않도록 처리.
- 입력값 검증: 입력값에 금지된 문자(
'
,--
등)가 있는지 확인. - 최소 권한 설정: 데이터베이스 계정의 권한을 최소화하여 데이터 유출을 방지.
반응형
SMALL
'보안' 카테고리의 다른 글
인증(Authentication)과 인가(Authorization)의 차이점 (0) | 2024.12.08 |
---|---|
XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery)의 차이점과 방어 방법 (1) | 2024.12.08 |
SSL/TLS의 역할과 동작 방식 (0) | 2024.12.08 |
대칭키와 비대칭키 암호화의 차이점 (0) | 2024.12.08 |
정보 보안의 3요소 (0) | 2024.12.08 |