쿠키
클라이언트(브라우저) 로컬에 저장되는 키, 값이 들어있는 데이터 파일
만료일, 경로 정보 등을 가지고 있으며 서버에 요청 시 함께 쿠키를 전달한다
세션
쿠키에 기반하지만 사용자 정보 파일을 서버 측에서 관리하는 방법
서버에서 클라이언트를 구분하기 위해 세션 ID를 부여하며 클라이언트는 세션 ID를 쿠키에 저장
서버 접속 시 세션 ID를 서버에 전달한다
쿠키와 세션은 HTTP가 비 연결성, 무상태 특성을 가지기 때문에 클라이언트를 식별하기 위해 사용한다
SOP
원본 출처에서 실행 중인 웹 어플리케이션은 보안상의 이유로 동일한 출처의 리소스만 공유할 수 있다는 정책
CORS
원본 출처에서 실행 중인 웹 어플리케이션이 다른 출처의 자원에 접근할 수 있도록 서버에서 관련 HTTP 헤더를 추가하여 브라우저에 알려주는 체제
다른 출처의 기준
URI에서 Protocol, Host, Port가 다른 경우
http://localhost:8000/board?page=1
http: Protocol
localhost: Host
:8000: Port
/board: Path
?page=1: Query String
REST의 원리를 따르는 API
REST
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
권한이 없는 사용자가 악의적인 용도로 웹 사이트에 스크립트를 삽입하는 공격 기법
예방방법
악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위
예방방법
Client-Server
관심사의 명확한 분리
사용자들에게 제공하는 User Interface와 서버 내부의 작업을 분리
Stateless
무상태성
서버에서 클라이언트의 상태 정보를 저장하지 않고 들어오는 요청에 대해서만 처리하여 구현을 단순화 하는 것
Cacheable
요청에 대한 응답 내의 데이터에 해당 요청이 캐시 가능한지 불가능한지 명세 해주는 것
Uniform Interface
URI로 지정된 리소스에 균일하고 통일된 인터페이스 제공
Layered System
서버는 중개 서버 등을 사용하여 확장성있는 시스템을 구성할 수 있지만, 클라이언트는 대상 서버에 직접 연결되었는지, 중간 서버를 통해 연결되어있는지 인지 할 수 없다
Code-On-Demand
서버가 클라이언트에게 코드를 응답해주면, 클라이언트는 응답 코드를 실행할 수 있다
사용자의 인증 정보를 암호화시킨 것으로, 사용자가 최초 로그인 시 토큰을 발급해주고 이후 사용자는 이 토큰을 가지고 출입할 수 있게 된다
세션과 달리 클라이언트에 저장되고 서버는 토큰에 대한 검증만 수행하면 되기 때문에 서버에 부담이 적은 방식
URI (Uniform Resource Identifier)
인터넷에 있는 자원을 어디에 있는지 자원 자체를 식별하는 방법
URI의 하위개념으로 URL, URN이 있다
URL (Uniform Resource Locator)
네트워크 상에서 자원이 어디 있는지 위치를 알려주기 위한 규약
URN (Uniform Resource Name)
URN은 리소스에 대해 영속적이고 고유한 이름을 부여하는 것으로 리소스의 위치가 바뀌더라도 고유 식별자인 URN만 알고 있으면 언제든 리소스에 접근할 수 있다
클라이언트가 요청하는 html, image, js, css등에 대해 첫 요청시에 파일을 내려받아 특정 위치에 복사본을 저장하고, 이후 동일한 URL의 리소스요청은 다시 내려 받지 않고 내부에 저장한 파일을 사용하는 것
웹 캐시를 사용하면 클라이언트는 서버를 통해 내려 받는 양이 적어지니 응답 시간이 감소하고 서버는 네트워크 사용량을 줄여 비용을 아낄 수 있게된다
클라이언트에서 서버로 접속할 때 직접적으로 접속하지 않고 중간에 대신 전달해주는 서버
프록시 서버를 사용하는 이유는 보안, 캐시 우회 등의 이유로 사용한다
클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성
캐시 저장, URL 필터링의 장점이 있다
서버쪽에 위치하여 클라이언트이 접근을 최초로 받아 요청을 서버에 배분해주는 역할
부담 분산, 캐시 저장, 보안 대책의 장점이 있다
쿠키와 세션
SOP, CORS
REST API
XSS 공격과 예방방법
SQL Injection과 예방방법
REST API 제약 조건들
token
URI, URL, URN
웹 캐시1
웹 캐시2
프록시