[Java 풀스택 과정 강의] 3월 12일

부트캠프 일지/Java 풀스택 과정 강의
2026.03.14
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

사실 3월 12일은 개인 사정으로 빠졌다.

다만 자료가 있어 공부할 겸 정리.

 

 

SQL 인젝션

3/12는 SQL 인젝션에 대해서 배웠다고 한다.

SQL 인젝션에 대해서는 다음 MDN의 글이 도움이 된다.

 

https://developer.mozilla.org/ko/docs/Glossary/SQL_Injection

 

SQL 인젝션 (SQL Injection) - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

 

developer.mozilla.org

 

'or'1'='1 혹은 ' or 1=1 --라는 Magical String이 존재한다. 이게 왜 먹히는가? 하면 1=1은 항상 참이기 때문이다. 즉, where절에서 where 조건 = '내용' or 1=1을 사용함으로써, where을 참으로 하여 모든 레코드를 탈취할 수 있게 된다.

이를 연계한 union 삽입공격도 가능한데, 인젝션에 취약한 테이블을 먼저 이용하여 레코드를 탈취, 이후 UNION 코드를 사용하여 다른 테이블 정보를 아는 방법이 있다. 특히 oracle의 경우 모든 테이블의 정보를 ALL_TAB_COLUMNS 에 저장해두기 때문에, 이를 사용하여 다른 테이블의 필드명 및 필드 타입을 알 수 있다.

 

이러한 인젝션을 막기 위해서 보통은 입력값을 이스케이핑처리(필터처리)하는 방법을 사용한다. 혹은 PreparedStatement를 사용하기도 한다. PreparedStatement와 인젝션 관련 이야기는 TIL에서.

 

https://bbbbabbbababababa.tistory.com/72#4.-statement-vs-preparedstatement

 

[Java 풀스택 개발자] JDBC 편 : Java와 DB의 Connection, JDBC

0. 들어가기 전에 반성할 점요즘 스터디와 코테런 등등의 활동으로 TIL을 쓰는 것이 좀 소홀해졌다. 남들이 보기에는 충분히 훌륭하다고 할 수도 있겠지만, 내용을 정리하는 것에 급급한 느낌이

bbbbabbbababababa.tistory.com

 

 

참고로 여기서는 오류 메시지를 이용하기도 했는데, 입력값이 맞지 않으면 상세한 오류 내용을 알려줘 근사치를 넣어 정답을 확인하는 게 가능하기 때문이다.

 

사실 아는 내용이긴 하다(요즘은 이 때문에 서버/호스팅 차원에서 특수문자를 막거나 필터링 시키는 경우도 많다). 매우 기초적인 보안 이야기이기도 하고…