일단 씻고 나가자
23.08.03 본문
2023. 08. 03 목요일
- [Effecive Java] Enum의 ordinal과 instant field란? 주의사항?
: ordinal은 각 변수가 몇 번째로 선언되었는지 반환해주는 내장 함수이다.
다만 ordinal()은 자료구조를 위해(EnumMap/Set) 사용되는 함수이지 엄밀히 사용자를 위한 함수는 아니고, 순서대로 매겨진 값으로 로직에 활용했을 경우 중간에 다른 값이 끼어든다든가 하는 문제가 생길 수 있으므로 var(1)처럼 사용자가 직접 값을 넣는 instant field를 활용해야 한다.
- HTTP method의 종류, 설명?
GET
// url에 요청한 정보가 “?key1=val1&key2=val2..” 형식으로 표기되며,
흔히 정보를 가져오기(읽기) 위한 방식.
2. POST
// url에 요청한 정보가 표기되지 않으며, 따라서 민감한 정보에 쓰인다.
흔히 서버에 데이터를 입력할 때 사용.
정보는 HTTP Request-Body으로 전달된다.
3. PUT
// 정보 수정(UPDATE)
4. DELETE
// 정보 삭제(DELETE)
- status code란? 주요 status code(200, 400, 401, 403, 404, 500) 설명?
: 응답 코드. HTTP 메서드로 요청한 정보가 서버에서 어떻게 처리되었는지를 알려주는 정보.
200 – 정상
400 – 유효하지 않은 파라미터 또는 잘못된 요청
401 – 승인되지 않은 엑세스 (권한)
403 – 엑세스 금지
404 – 리소스를 찾을 수 없음
500 – 내부 서버 오류
- 쿠키, 세션이란? 설명? 유효기간? 세션, 쿠키, 토큰, JWT란?
: 쿠키란 정보를 웹 브라우저에 저장해놓는 기술로서, 예를 들면 로그인 시에 id, password를 request 하면 서버에서 회원인지 확인한 후 Set-Cookie로 id, pw 정보를 저장하여 쿠키에 담아 response 한다. 이후의 모든 request는 cookie : ~~ 의 쿠키 정보를 동반하며, 서버에선 해당 쿠키 정보로 이미 로그인된 아이디임을 확인하고 적당한 자원을 보내준다.
단, 쿠키 방식은 아스키 코드로 모든 정보가 이루어져 있기 때문에 TCP를 확인만 하면 id, pw 정보를 모두 확인할 수 있어 보안에 취약하다.
이를 보완하기 위해 나온 세션으로, 동일하게 쿠키의 방식을 활용하나 Set-Cookie 시에 암호화된 정보를 서버에 따로 보관하고 쿠키에 담는다. 이후 똑같은 방식으로 통신하며 서버는 암호화된 정보를 동일 사용자로 판단하고 자원을 보내준다.
단, 암호화된 정보는 id, pw 뿐 아니라 해당 사용자의 IP, agent 정보, 웹 브라우저 정보 등의 모든 정보를 활용하여 특정 알고리즘을 통해 도출한 값이고 요청이 올 때마다 재계산하여 서버에 저장된 값과 동일하게 나오는지 판단한다.
둘의 유효기간은 expires 설정이 있으면 로컬 디스크(서버)에 저장하여 유효기간 경과 시 삭제하고, 없다면 메모리(브라우저)에 저장 후 브라우저 종료 시 삭제한다.
세션은 쿠키를 전달하기 위한 매개체일 뿐이고, 세션 DB에서 쿠키에 담겨진 암호화된 세션 ID를 확인한다. JWT는 토큰을 확인하는데, 이 토큰은 암호화되어 있지 않지만 단순히 권한(유효한지)을 확인하는 용도로 이용된다. 따라서 토큰에 주요한 정보를 담아선 안 된다.