쿠키에 인증 상태가 있는 데이터를 저장하면 쿠키 값을 조작하면 임의 사용자로 인증된 것처럼 요청을 조작할 수 있는 문제가 발생한다. 이러한 문제점을 해결하기 위해 서버에 데이터를 저장하기 위해 세션을 사용한다.

 

데이터를 서버에 저장하고 해당 데이터를 접근할 수 있는 유추할 수 없는 랜덤 문자열 키를 만들어 인증된 클라이언트에 전송한다. 

이 랜덤 문자열 키를 세션 ID라고 한다.

브라우저는 세션 ID를 보통 쿠키에 저장하고, 이후 클라이언트가 서버에 요청을 보낼때 http 헤더에서 세션 ID값이 유효한 세션인지 확인 후  요청을 처리하고 응답한다.

 

 

'Web > Technical' 카테고리의 다른 글

Cookie  (0) 2020.11.14
JSON(JavaScript Object Notation)  (0) 2019.10.18

쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터다. 브라우저는 이 데이터(쿠키)들을 저장해 두었다가 동일한 서버에서 재 요청 시 저장된 데이터(쿠키)들을 같이 전송한다.

 

http 프로토콜은 하나의 요청에 하나의 응답을 한 후 네트워크 연결을 끊는 connectionless의 특징과 네트워크가 연결이 끝맺을 때 상태를 유지하지 않는 stateless 속성을 갖기 때문에 http 요청마다 새로운 커넥션을 열어 인증을 계속 해야한다는 단점 때문에 쿠키라는 개념이 생겼다.

 

쿠키생성

쿠키는 http 헤더의 Set-Cookie 헤더로 저장하고, 브라우저는 Cookie 헤더로 저장되있던 쿠키들을 서버로 전송한다.

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: id=phulasso
GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: id=phulasso

Javascript의 document.cookie를 통해서도 쿠키를 저장할 수 있다.

document.cookie = "id=phulasso;"

 

쿠키소멸

쿠키를 생성할 때 ; 뒤에 Expires 속성이나 Max-Age 속성으로 삭제 기간을 정할 수 있다.

Set-Cookie: id=phulasso; Expires=Sun, 15 Nov 2020 07:28:00 GMT;

세션 쿠키는 현재 세션이 끝날 때 삭제된다. 어떤 브라우저는 재시작 할때 세션을 복원하여 쿠키가 무기한 존재할 수 있도록 하기도 한다.

'Web > Technical' 카테고리의 다른 글

Session  (0) 2020.11.16
JSON(JavaScript Object Notation)  (0) 2019.10.18

JSON(JavaScript Object Notation)

json은 "속성 - 값" 또는 "키 - 값" 쌍으로 이루어진 데이터 오브젝트를 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.  AJAX, XML 등을 대체하며 .json 확장자를 가진다.

 

JSON 기본 자료형

자료형으로는 number, string, boolean, array, object, null 이 있다. 다음은 이 자료형 들의 특징이다.

number : 8진수, 16진수, 표현 방법은 지원하지 않는다.

string : 항상 큰따옴표(")로 묶어야 하고, 역슬래시(\)는 제어 문자를 표현한다.

  • \b 백스페이스
    \f 폼 피드
    \n 개행
    \r 캐리지 리턴
    \t 탭
    \" 따옴표
    \/ 슬래시
    \\ 역슬래시
    \uHHHH 16진수 네자리로되어 있는 유니코드 문자

array : 대괄호[]로 나타내며, 각 요소들은 (,)로 구분한다. 요소간의 순서에 의미가 있다.

  • ex) [10, {"k":10}, [1,"one"]]

object : 순서가 없는 "이름-값" 쌍의 집합으로 이름은 항상 string 자료형이다. 중괄호{}를 사용한다.

 

JSON 객체 예시 ( 키-값 패턴으로 표기)
 {
    "이름": "phulasso",
    "나이": 18,
    "성별": "남",
    "주소": "경기도 수원시",
 }

 

JSON 장점

  • 텍스트로 이루어져 있어 사람과 기계 모두 읽고 쓰기 쉽다.
  • 프로그래밍 언어와 플랫폼에 독립적이므로 서로 다른 시스템 간 객체를 교환하기에 좋다.
  • js문법을 채용하여 eval 명령으로 곧바로 실행이 가능하다. 그러나 외부에서 악성코드 유입 가능성이 있다. 최신 웹 브라우저 들은 json 전용 파서 기능을 내장하고 있고, 더 안전하고 빠르다.

 

 

 

'Web > Technical' 카테고리의 다른 글

Session  (0) 2020.11.16
Cookie  (0) 2020.11.14

+ Recent posts