** HTTP(HyperText Transfer Protocol)
- 정의 : 서버와 인터넷 사이에 문서를 전송하기 위해 사용되는 통신 규약
- 요약 : 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙, 80번 포트를 주로 사용하며 요청(Request)과 응답(Response)으로 구성되어 있다.
- 원리 : 클라이언트가 웹 페이지에서 링크가 걸려있는 텍스트를 클릭(Request, 요청)하면 링크를 타고 새로운 페이지로 넘어간다(Response, 응답)
* HTTP method
- CRUD(GET, POST, PUT, DELETE), *PATCH, *HEAD, *OPTIONS
[*PATCH : 변경 가능한 리소스 부분을 업데이트에 사용하는 기능, PUT method를 사용한다]
[*HEAD : 클라이언트가 본문없이 리소스에 대한 헤더만 검색하는 경우만 사용]
[*OPTIONS : 클라이언트가 서버의 리소스에 대해 수행 가능한 동작을 알아보기 위해 사용, *CORS에 사용]
[*CORS(Cross-Origin Resource Sharing) Error : *Cross-origin이 발생한 오류]
[*Cross-origin : 프로토콜(http, https)과 도메인(.com, .net)주소, 포트번호(8080, 3000)들 중 하나라도 다른 경우에 발생하는 오류]
** HTTP 응답 상태 코드
- 종류 (400 -> Body 값 오류, 500 -> 서버 오류)
1) 400 : 잘못된 값이 요청된 경우 (택배를 잘못 보낸 경우)
2) 401 : 권한이 없는데 권한을 요청한 경우 (사용자가 최고관리자 권한을 요청한 경우)
3) 403 : 로그인을 하지 않았는데 데이터를 요청하는 경우 (로그인이 필요한 경우)
4) 404 : 해당 주소의 경로가 없는 경우 (404 Not Found -> 경로가 없거나 잘못된 경우)
4) 405 : CRUD의 사용이 잘못된 경우 (CRUD method가 잘못된 경우)
5) 500 : 서버에 문제가 있을 경우(보안에 관련해 노출을 예방하기 위해 상세정보 미표시)
** HTTPS(HyperText Transfer Protocol over Secure Socket Layer)
- 정의 : HTTP에 Secure Socket이 추가된 것
- 요약 : HTTP Protocol이 암호화 된 것
- 특징
1) 데이터 정보 전송이 그대로 보여지는 HTTP에 대비해 HTTPS는 암호화되어 데이터가 전송된다
2) HTTPS는 특정 사용자에게만 알려지도록 설정되어 있다
3) HTTPS는 SSL이나 *TLS Protocol을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, *SSL Protocol 위에서 HTTPS Protocol이 동작한다
[*TLS(Transport Layer Security) : SSL보다 향상된 버전으로, 개인 정보 보호 및 안전한 전송을 위해 이메일을 암호화하는 표준 인터넷 프로토콜]
[*SSL(SECURE SOCKETS LAYER) : 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하는 것]
* HTTPS의 암호화 방식
1. 공개키 암호화 방식
1) 인터넷에서 보안을 유지하기 위한 암호 방식 중 암호화와 복호화 과정에서 서로 다른 키를 사용하는 비대칭 방식
2) 둘 중 하나를 비공개키(private key)를 사용하며 자신에게만 공개되있는 비공개 형식이다.
3) 나머지 하나를 공개키(public key)를 사용하며 유출이 되어도 비공개키(private key)를 모르면 복호화가 불가능 하기 때문에 안전한 방식이다
2. 대칭키 암호화 방식
1) 동일한 키로 암호화, 복호화가 가능하여 같은 키를 사용하는 대칭 방식
2) 매번 다른 키로 사용할 수 있기 때문에 유출이 되어도 안전한 방식이다
3) 공개키보다 빠르게 통신할 수 있다
* HTTPS의 장점
- 웹사이트의 *무결성을 보호해준다
- HTTPS는 정보를 주고 받을때 정보 유출의 위험을 방지하고 보안을 강화해준다
- 네이버, 다음, 구글 등 모든 사이트가 검색 엔진 최적화(SEO: Search Engine Optimization)프로그램을 사용하고 있다
[*무결성 : 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것을 의미한다]
* HTTPS의 단점
- HTTPS를 지원한다고 무조건 안전한 것은 아니다
- 신뢰할 수 없는 *CA기업을 통해 인증서를 발급 받을 수도 있다
[*CA(Certificate Authority, 인증기관) : 인터넷에서 사용하기 위한 디지털 인증서를 발급하는 하나의 단위]
* token, session, cookie
- 개요 : HTTP 통신은 요청(Request) -> 응답(Response) 이 종료되면 stateless(상태가 유지되지 않은) 한 특징 때문에 연결을 끊는 처리 방식으로 진행된다
- 로그인과 같은 일을 할 때, '누가' 로그인 중인지 상태를 기억하기 위해 쿠키, 세션, 토큰을 사용.
1. token (암호화, 복호화)
- 정의 : 토큰 타입은 기본 타입인 문자열(string) 타입으로부터 파생된 타입
- 요약 : Header, *Payload, *Signature 세 파트를 . 으로 구분한 것
[*Header : *jwt를 어떻게 검증하는가에 대한 정보]
[*Payload : jwt 내부 내용 -> 클라이언트와 서버간 주고받은 데이터]
[*Signature : .을 구분자로하여 Header와 Payload를 합친 문자열을 서명한 값]
[*jwt : 인증에 필요한 정보들을 JSON토큰 방식으로 암호화 시킨 것]
2. session
- 정의 : 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법 (-> 서버에서 가지고있는 정보)
- 요약 : 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점
3. cookie
- 정의 : 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일 (-> 서버에서 발급된 세션을 열기 위한 키 값)
- 요약 : 웹 사이트에 접속할 때 서버에 의해 사용자의 컴퓨터에 저장되는 정보
'JAVA > 용어' 카테고리의 다른 글
JAVA 용어 정리 - 8 (Servlet, Bean) (0) | 2023.05.25 |
---|---|
JAVA 용어 정리 - 7 (Springboot - XML, JSON, YAML) (0) | 2023.05.25 |
JAVA 용어 정리 - 5 (프로토콜) (0) | 2023.05.24 |
JAVA 용어 정리 - 4 (Rest API) (0) | 2023.05.22 |
JAVA 용어 정리 - 3 (Spring framework) (0) | 2023.05.19 |