본문 바로가기
애플리케이션 보안

애플리케이션 보안 [다섯 번째 정리]

by 할 수 있다 ! 2024. 4. 18.

안녕하세요 ! 

 

이번 시간은 애플리케이션 보안 다섯 번째 정리를 하도록 하겠습니다. 

 

 

먼저 SQL 인젝션에 대해서 알아보도록 하겠습니다. 

 

SQL 인제션은 악의적인 사용자가 애플리케이션의 입력 폼 등을 통해서 SQL 쿼리를 조작하여 데이터베이스에 대한 공격을 수행하는 방법입니다. 이것은 보안 취약점을 이용해서 공격자가 데이터베이스에 무단으로 접근하거나 데이터를 변경하거나 삭제하는 등의 악의적인 작업을 수행할 수 있게 됩니다. 

 

SQL 인젝션 공격은 일반적으로 사용자의 입력 데이터를 쿼리에 직접 삽입하는 상황에서 발생합니다. 

예를 들어서, 사용자의 아이디와 패스워드를 검증하는 로그인 폼에서 입력값을 직접 SQL 쿼리에 넣는다면, 공격자는 입력 폼에 SQL 쿼리를 삽입하여서 로그인을 우회하거나 데이터베이스를 공격할 수 있습니다. 

 

SELECT * FROM users WHERE username = '입력값1' AND password = '입력값2';

 

여기서 사용자의 입력값이 직접 쿼리에 삽입된다면, 공격자는 입력 폼에 다음과 같은 값을 입력할 수 있습니다.

 

' OR '1'='1

 

그러면 실제 실행되는 쿼리는 다음과 같이 되어서 모든 사용자의 정보가 반환될 수 있습니다. 

 

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

 

이와 같은 공격을 막기 위해서는 사용자 입력값을 안전하게 처리해서 쿼리에 직접 삽입하지 않고 대신 파라미터화된 쿼리나 입력값의 유효성을 검증하는 방법 등을 사용해야 합니다. 또한, 데이터베이스 사용자의 권한을 최소화하여 가능한 한 공격의 영향을 최소화하는 것도 중요합니다.