CS/Database (3) 썸네일형 리스트형 [DB] JDBC란? JDBC(Java Database Connectivity)는 자바가 Database와 통신하기 위한 API 입니다. JDBC의 등장배경은 https://code-lab1.tistory.com/272 여기를 참조 하면 좋습니다. 어플리케이션과 DB서버를 직접 연결하는 방식으로 진행었었으나 이 경우 데이터베이스를 다른 데이터베이스로 변경시 1. 커넥션 연결 2. SQL 전달 3. 결과 응답, 3가지에 대해서 모든 소스코드를 번경해야 합니다. 추가로 개발자가 각각의 데이터베이스마다 위 수행하는 과정들에 대해서 모두 학습해야한다는 단점이 있습니다. 이를 해결하기 위해 나온 것이 JDBC입니다. API이기 때문에 실제 해당 API를 구현한 JDBC 드라이버의 경우는 DB에 따라 커넥터라고 하는 드라이버를 별도 설.. [DB] Statement 란? Prepared Statement 란? Statement 는 SQL문을 실행할 때 사용하는 인터페이스입니다. DB와 커넥션을 맺으면 리턴되는 Connection 객체에서 createStatement() 를 이용해, 위 인터페이스를 구현한 Statement 객체를 리턴받을 수 있습니다. 이렇게 리턴받은 Statement 객체에 있는 executeQuery() 와 같은 메소드를 사용하여 쿼리를 파라미터로 전달해주면 쿼리를 실행하고 결과물을 리턴받을 수 있습니다. Statement 객체가 쿼리를 수행할 때 아래와 같이 4가지 과정을 거칩니다. Prepared Statement는 위의 Statement 인터페이스를 상속한 인터페이스입니다. Statement의 4과지 과정 중 첫 번째 parse 과정의 결과를 캐싱하고, 나머지 3가지 단계만 거쳐서 S.. [DB] SQL Injection 이란? SQL Injection 이란 해커에 의해 조작된 쿼리문이 데이터베이스에 전달되어 비정상적인 명령을 실행시키는 공격 방법입니다. 여기서 조작된 쿼리문이란 유저가 입력하는 파라미터에 정상적인 값이 아니라 'or 1=1 , where 1=1 과 같이 무조건 실행 될 수 있도록 조건과 해커가 원하는 쿼리문을 같이 입력한 쿼리문을 의미합니다. 예시1) SELECT * FROM user WHERE id='abc' AND password = '1234'; id에 SQL INJECTION abc -> ' or 1=1 -- 결과 : SELECT * FROM user WHERE id='' OR 1=1 -- AND password = '1234' -> select * from user 가 됨 예시2) INSERT INTO.. 이전 1 다음