。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-63일차(7월24일)] - 웹프로그래밍 44일차

quarrrter 2023. 7. 24. 16:14

메서드를 호출하면 dbms에서 제공하는 jdbc 드라이버를 통해 통신

java database connectivity? 

실무는 sql(표준) + dbms 전용 문법  사용

현재 상태 : 

*DAO와 DBMS 

 

createDate 수정 

date 수정

아래 게터세터도 수정 , add list.. 리스너들 다 수정, clinet 수정

delete에 암호 추가 

 

 

 

where 절에 입력한 %s를 비번으로 사용하게 되면 해킹쉬움 그러면 안됨 ~!

sQL 삽입 공격 방어하기 

기존, 게시물 두개 입력 됨
수정

// SQL 삽입 공격

// => 입력 문자열에 SQL 명령을 삽입하여 프로그램의 의도와 다르게 데이터를 조작하는 행위.

// => 사용자가 입력한 값을 가지고 SQL 문장을 만들 때 이런 문제가 발생한다.

// => 예를 들어 이 예제를 실행할 때 다음과 같이 입력해 보라!

// 제목? aaaa

// 내용? bbbb'), ('haha', 'hoho'), ('hehe', 'puhul

//

 

// 위에서 준비한 SQL 문에 값을 설정한다.

// => ? : 값이 놓일 자리를 의미한다. 'in-parameter' 라 부른다.

// => in-parameter 에 들어갈 값의 타입에 따라 적절한 setXxx() 메서드를 호출한다.

//

stmt.setString(1, title);

stmt.setString(2, contents);

 

// => 이미 SQL 을 준비한 상태이기 때문에 실행할 때는 SQL를 줄 필요가 없다.

// => setXxx()로 설정된 값은 단순한 텍스트로 처리한 후

// SQL을 실행할 때 파라미터로 전달되기 때문에

// SQL 삽입 공격이 불가능 하다.

int count = stmt.executeUpdate();

prepared 로 미리 sql을 준비하고 , set, execute 실행. . sql 조작 불가 ,,,,, 

 

myapp 수정


47. SQL 삽입 공격

1. 입력값으로 sql 생성할 때 

update myapp_board set

   title ='%s',

  cotent='%s'

  where category=%d and board_no=%d and password='%s'

                                                                                        1111' or '1'='1'      라고 입력하면 

                                                                  and password='1111' or'1'='1' 로 sql 조작 가능 

=> 사용자가 값을 입력할 때 SQL 문법에 영향을 끼치는 문장을 삽입하여 공격하는 해킹 기법

해결책: 2. 입력값과 SQL문을 분리 처리 

2. 입력값과 SQL문을 분리 처리 (? : inparameter)

update myapp_board set

    title =?,

   cotent=?

   where category=? and board_no=? and password=?

 

*in-parameter 값 넣기: 

PreparedStatement stmt = con.prepareStatement(SQL);

 stmt.setXXX(1, 값); //(in-parameter 번호(1부터 시작), in-parameter에 들어갈 값))

 stmt.setXXX(2, 값);

 

 

비밀번호 sha1

비번은 단 방향임 돌아올 수 없음 

dao에 추가하기. 

 


48. 외부 키(Foreign key) 사용하기

fk 설정 범위 넘어서면 에러뜸

Member에 createdDate 추가 (게터세터 추가)

memberdao findby 수정 

board, member 둘다

 

 

조인을 이용하여 외부 테이블의 값을 가져오는 방법 - 보드랑 멤버 번호

 

49.로그인 -이메일 & 비밀번호 적용 

로긴 리스너 생성 

리스너들 전체 수정