Rubberduck-Debugging

[6일차]DAO를 사용하는 이유, PreparedStatement 본문

개발자/20181127 교육과정

[6일차]DAO를 사용하는 이유, PreparedStatement

P缶 2018. 12. 4. 17:51

v4.5~4.8

1.app의 excute() 메소드로 command를 각각 실행한다.

2. command는 interface BoardDao를 통해 DBMS에 진입

3. DBMS는 File을 가져와서 다시 리턴


구성이 복잡해진 이유 : oracle, mysql 등 DBMS가 달라, ,sql언어에 차이가 있는 경우 어려움이 생긴다.

따라서 interface로 DAO를 구성해서, 고객사의 데이터베이스가 oracle인지 mysql인지에 따라 그떄그때 DAO만 바꿔주면 되는 것.

 

예) 만약 고객사가 MariaDB를 쓰는 경우, 아래처럼 BoardDao 인터페이스를 상속받아, 그에 맞는 구성을 해주면 되는 것.

(현재 JDBC언어로 Statement를 사용하여, 보안이 낮아진 상태)  


PreparedStatement로 변경하여, sql 삽입 공격에도 로그인이 불가하도록 변경되었다(statement 사용 시 sql 삽입공격 허용됨)


sql 삽입공격

예시 1) 로그인할때 아이디만 알아도 전부 로그인 가능

2) 다른 사람 아이디로 글쓰기

예방책 : preparedStatement 사용 등


더 알아보기 위한 링크출처 : 

https://github.com/eomcs/eomcs-java-project/tree/master/eomcs-java-project-5.1.0-server

https://github.com/eomcs/eomcs-java-project/tree/master/eomcs-java-project-5.1.1-server


프로퍼티명 = 게터세터의 앞 겟셋을 지운 거!!

필드명 private int no; <- no

필드명과 플퍼명이 다를 수 있습니다~