본문 바로가기

SQL Injection2

[Spring Boot] 27. PreparedStatement Table Name 적용 지난 번에는 SQL Injection과 관련하여, 다각도로 알아보던 중... PreparedStatement에 대해서 알아보았습니다. 이 경우에는 where 조건절 등 query문에서 변수에 해당하는 부분에 parameter를 binding하는 부분이 전부였습니다. 하지만 다양한 경우가 존재하고... 테이블명 자체를 변수화하여 binding이 필요한 상황이 생길 수 있습니다. 따라서, 이번에는 PreparedStatement에서 테이블명을 변수로 쓰기위한 방법을 알아보겠습니다. PreparedStatement를 사용하게 되면 setString( ) 등을 통해서 관련 값이 그 자체로 전달되는 것이 아닌 ' ' (홑따옴표)로 한번더 감싸져서 넘겨지게 됩니다. 그렇기 때문에 SQL Injection의 방어가 .. 2021. 3. 15.
[Spring Boot][Error] Mybatis Dynamic Table Select 이번에는 Mybatis로 구성한 application에서 mapper로 table명을 string으로 넘겨주고 동적테이블(Dynamic Table)로 조회(Select)하는 방법에 대해서 알아보겠습니다. 때로는 구성하는 application의 db구조가 동일한 구조의 데이터를 각 코드별로 구성을 하고, 해당 코드명으로 table명을 구성하는 경우가 생길 수 있습니다. 이럴 경우에는 mapper.java interface에서 parameter로 string의 table명을 전달하고, mapper.xml에서는 그 parameter를 sql의 from 이후에 배치하여 조회 query를 수행해야 합니다. 결국 parameter로 전송된 table명은 select query에 조합되어... SELECT * FRO.. 2021. 3. 12.