쿼리문으로 공격받는고
클라이언트,서버 검증 validate
persistence layer(dao)에서 prepared statement 사용
DataBase이용해서 로그인처리
패스워드 암호화기법
가이드라인에서 권고한 알고리즘을 선택해서 사용했음
붕어빵 붕어빵틀
붕어빵 장사를 하라면 내 붕어빵의 모양 거기에 뭘 집어넣을건지 특성을 가미할것인지 -- 객체에 대한 설계과정
5개를 집어넣을거야 다음에 찍어낼수있는 틀을 만들어 내는 과정을 모델링이라고 한다
객체생성
모델링을 하고나면 장사를 하지 그틀에 반죽을 넣고 앙고를 넣고 붕어빵은 여러개가 나온다
붕어빵은 설계도에 따라서 나온다 (인스턴스)
리플렉션
그 붕어빵이 어떤맛인지 찾아내는것이 리플렉션 틀을 찾아내는 작업!
클래스라는 녀석을 뽑아내고 어떤 상태인지 필드와 메서드에서 뽑아낸다 붕어빵의 맛과 형태 특성을 찾아내는 과정
리플렉션 - 붕어빵과 거울을 기준으로 생각해봐라
아이디 기억하기
로그아웃하고 그 아이디가 남아있는 경우
로그인을 했어 이틀뒤에 들어가서 로그인정보가 유지가 되려면 상태정보를 어디에 저장을 할까?
데이터를 저장할 수 있는 위치는 클라이언트와 서버
로그인하고 서비스 열심히 이용하고 브라우저만 닫았어
이틀뒤에 우리사이트에 들어가도 로그인 상태가 유지가 되어야해 세션은 타임아웃이 있어서 자동만료가 이루어진다
타임아웃이 이틀이상이 되어야하는데 타임아웃은 서버가 갖고있는 기본상태 로그인했다라는 상태정보는 어딘가에 저장해야하는데 세션에 넣으면 30분뒤에 사라진다 답은 데이터베이스다 그 로그인 상태정보를 꺼낸다음에 디비에 넣어놓은다
이틀뒤에 들어온 사람이 이틀전에 로그인한 사람인지 어떻게 알까 식별할 수 있는 키를 만들어놓는다 (16진수로) 그 문자열을 서버와 클라이언트에게 각각 부여를 한다 그 키를 같이 디비에 집어넣는다 16진수 긴문자열은 클라이언트에도 저장이 되어있어야한다 그 정보가 서버에 전달이 되어야한다 동일하다는 상황이 만들어지고 디비에 저장해놓은 정보가 복원이 가능해진다
어떤식으로 우리는 처리를 할거냐면
아이디를 일주일동안 기억하게 할거야
세션에서 타임아웃 이후에는 쓸수없게 되는데
이걸 체크했다는 상태정보를 저장할건데
로그인했다는 상태정보를 저장한다는 얘기는 아니야
클라이언트사이드에 저장하는 방법 '쿠키'
첫번째 주제 : 쿠키를 잘 구어서 써먹을 수 있는지
/webStudy02_Maven/webapp/10/cookieDesc.jsp
이거 만듦
기술면접시간에 한 세트가 있는데
서블릿과 jsp 차이점
쿠키와 세션의 차이점
세션과 한세트로 많이 얘기를 한다
- 상태정보를 서버측에 저장 : session
- 상태정보를 클라이언트측에 저장 : cookie
- Http프로토콜은 기억하는 구조를 가지고 있지 않다 대화가 안된다 stateless 구조
이걸 보안하기 위해서 상태정보를 클라이언트측에 저장하는 수단이 쿠키!
- (상태정보를 서버측에 저장하는 것은 세션!)
- 온라인 서점 첫번째 책을 검색하는 요청과 두번째 책을 검색하는 요청(2권이상 책, 검색, 요청)이 다른데 이 두 요청이 같은 클라이언트인지 식별할 수 가 없다
쿠키는 사이즈가 제한이 있다
서버에서 브라우저쪽으로 전송이 된다
response에 실어야한다 → 2단계
나중에 서버로 다시 되돌아 온다 sent back to the server → 이것이 5단계
쿠키 20개로 제한 토탈 300개 크키는 4키로바이트 제한
서버에서 만든 쿠키데이터를 클라이언트에게 보내야한다
response를 이용해서 line(상태코드) body(콘텐츠) header(쿠키가 사용하는 영역 단점 : 문자형태로 전송)
쿠키라는 녀석을 통해서 저장할 수 있는 것은 문자밖에 없다
- 2진데이터를 쿠키에 저장해야되는 상황이 왔어 그러면 2진데이터를 문자로 바꿔야 저장이 가능
네트워크가 문자밖에 인지를 못하니까 2진데이터를 변환해야한다(인코딩)- 인코딩방식이 base64방식 64개 문자로 바꿔버려 영문자대소문자숫자..
- 헤더에 저장할 수 있는 길이를 확인해야한다
- 우선 쿠키라는 녀석은 클라이언트에 저장소를 빌려서 저장해야한다 빌려서 쓰는 주제에 뭘 남길수 없으니까 쿠키 정책이 필요하다
- 쿠키정책이 필요한이유는 클라이언트측에 저장하기 때문에
크롬이 갖고있는 쿠키저장소이건 엣지인데 각 브라우저마다 저장소가 다르다
쿠키는 가져올때 배열로 가지고옴
클라이언트가 보낸 쿠키는 믿어서는 안된다여기가 널이여서널체크 추가
요것들이 쿠키가 설정할 수 있는 속성들
여기있는 모든속성은 다시 서버로 보낼거냐 말거냐 조건들, 제약사항
설정할 수 있는 속성들
이 화살표는 dependency 이화살표는 realization(누가누구를 임플리먼트 하고있다)
adapter가 dapatee를 갖고있다
코딩순서
1.Target
2. Adaptee
3. Adapter
4. OtherConcrete
5. Client
Adapter -- Target의 구현체 그것을 client가 가져감
아이디 기억하기 하기
로그인에 성공한 아이디는 일주일 성공을 해야댐
체크를 안하고 했을때는 아이디를 저장하지 않아야함
체크하지 않은건 내정보를 남기지 싫은것..