일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 마이바티스
- 풀스택
- html5
- 제이쿼리
- 로그인
- 네비게이터
- 미로 생성 알고리즘
- c programming
- 비밀번호찾기
- javascript
- 회원가입
- 프레임워크
- dbms
- 웹페이지
- jQuery
- 백엔드
- 서블릿
- Linked List
- 웹개발
- mybatis
- css3
- jsp
- 오라클
- 웹서비스
- spring
- 스프링
- Ajax
- Binding
- MVC
- 프론트엔드
- Today
- Total
목록로그인 (4)
Programmer's Progress

현재 개발 중인 웹 서비스는 보안을 전혀 신경 쓰지 않았었다. 클라이언트에서 서버로 데이터를 전송할 때, 서버에서 모델을 통해 DB에 데이터를 저장할 때 등등 만약 개발이 완료된 웹서비스가 보안 기능을 전혀 제공하지 않는다면 문제가 생길 것이다. 네트워크 보안 수업을 들으면서 SSL을 통해 대칭 암호키를 비밀리에 주고받을 수 있다면 좋겠지만 지금 당장으로는 지식이 부족하여 적용이 어렵다고 판단했고, 비대칭키 암호화를 통해 이를 부분 해결하기로 했다. 원리는 간단하다. 로그인 버튼을 누를때마다 서버는 클라이언트에게 랜덤 한 공개키 값을 보내주고 그에 대응되는 비밀키를 세션에 저장한다. 클라이언트는 전달받은 공개키로 비밀번호를 암호화한 후에 AJAX요청으로 암호화된 비밀번호와 암호화되지 않은 ID를 전달한다..

지난 포스팅에는 회원가입을 구현하는 과정과 시연을 보였다. 사실 회원가입이야 이전에도 여러 번 구현해본 적 있었지만, 이번에는 좀 체계적으로 DB를 구성하고 활용하기 위해 최대한 사용자의 릴레이션에는 나이, 성별 등의 서비스 구현에 크게 필요하지 않은 애트리뷰트는 과감히 삭제했고 대신, 아이디를 기본키로 설정후, 이를 외래 키로써 참조하는 릴레이션들을 여럿 구성하였다. 아이디/비밀번호 찾기 회원가입 해당 소스코드는 로그인을 위한 form 태그의 소스코드 일부이다. 상당히 구성이 간단하다. 사용자로부터 ID와 PW를 입력받고, 이 정보가 DB에 존재하는지 여부를 확인하면 끝이다. 그리고는 세션객체를 생성하여 해당 회원정보를 저장하고, 이 세션에 사용자 정보가 담겨있는지 여부를 판단하여 JSP를 이용해 기존..

이번에는 JSP를 이용해서 동적으로 화면이 구성되도록 하였다. 기존에는 HTML, CSS만을 이용해서 정적인 콘텐츠를 요청, 응답할 수 밖에는 없었다. 예를 들어 로그인을 하기 전과, 로그인한 후의 상태에 따라 메인 페이지에서 서로 다르게 웹페이지가 구성되도록 할 수 없었다는 것이다. 홍길동이라는 사람이 로그인에 성공하여 다시 메인 페이지로 복귀했을 때 최우 상단의 로그인을 위한 영역은, 홍길동이라는 사용자에 대한 정보를 위한 영역으로 쓰여야 하는데 기존의 HTML 문서를 요청하는 방식은 정적 콘텐츠를 요청하는 방식이었으므로 레이아웃을 변경할 수가 없었다. 이처럼 일반적인 웹서버에서는 정적인 콘텐츠만 제공하고, 제공받을 수 있으므로, 쇼핑몰에서 흔히 볼 수 있는 광고나 세일 품목 등, 실시간으로 변경될 ..

사람들은 로그인 페이지에서 한번 로그인을 하면, 그 서버의 모든 웹페이지가 나의 로그인 정보를 알고 있을 것이라 생각하기도 한다. 그러나 실상은 그렇지 않다. HTTP 프로토콜은 애플리케이션 레이어상에서 쓰이며 stateless한 프로토콜이다. 서버에서 클라이언트의 정보를 저장해두지 않는다. HTTP Request 메세지에는 요청 시에 필요한 정보가 GET, POST 등의 방식으로 전달이 된다. 즉, 그 메세지에는 요청에 필요한 모든 정보가 이미 들어있기에, 굳이 서버에서 정보를 추가적으로 저장할 필요가 없다. 트랜스포트 레이어상에서, 특히 TCP가 Reliable Data Transfer를 제공하기 위해서 Go-Back-N 방식과 Selective Repeat방식으로 이를 처리하고, RDT시간을 줄이기..