-
[보안] SQL Injection 대표예제와 원리Back End/보안 2023. 2. 13. 21:33
SQL Injection 의 대표예제 중 하나는 Application 에서 직접 짜여진 String 을 치환하여 DB 에 쿼리를 날리는 경우를 노리는 기법이다.
단순히 String 을 치환하여 DB 로 쿼리를 날리는 경우 대충 아래와 같은 Java 코드가 나온다.
String sql = "select * from adminTable where login_id = '{loginId}' and password = '{password}'" sql = sql.replace("{loginId}", loginId); sql = sql.replace("{password}", password); sendQuery(sql);
그럼 loginId 과 password 에 1' or '1'='1 라는 값이 전달된다면 쿼리가 아래와 같이 되어 버린다.
String sql = "select * from adminTable where email = '1' or '1'='1' and password = '1' or '1'='1';"
'1' = '1' 은 참이기 때문에 adminTable 의 모든 레코드를 가져오게 된다.
실제로 위의 쿼리를 ""를 제거한 채 DB 에 실행하면 모든레코드를 가져온다.
그럼 Java 에서는 어떻게 막고 있을까?
아래의 포스팅을 참조하자.
728x90'Back End > 보안' 카테고리의 다른 글