본문 바로가기

전체 글

(108)
[#51] TIL - JWT Secret Key 생성하는 법 ✏️ 0903      한 달 인턴 - 온보딩 과제 JWT 토큰 유효성 검사 메서드에 대한 테스트 코드를 작성해봤다public boolean validateToken(String token) { try { verifySignature(token); Claims claims = getUserInfoFromToken(token); if (claims.getExpiration().before(new Date())) { throw new CustomException(ErrorEnum.TOKEN_EXPIRATION); } return true; } catch (ExpiredJwtException e) { th..
[ 메모용 ] HTTP Status Code 프로젝트 진행하면서 정리해본 HTTP 상태코드 정리
[ #8 ] 쿠키, 세션의 개념과 차이를 설명해보세요 키워드 : 무상태(stateless), 이 기술이 왜? 생겨났는지 쿠키와 세션은 HTTP의 Connectless(비연결성)와 Stateless(무상태성)을 보장하기 위해 사용되는 기술로 웹에서 사용자의 상태를 유지하고 유저를 식별하기 위해 사용되는 기술입니다. 비연결성은 실제로 요청을 주고받을 때만 연결을 유지하고 응답을 주나면 연결을 끊는 성질을 의미하고, 무상태성은 서버가 클라이언트의 상태를 보존하지 않는 특징을 말합니다 쿠키는 클라이언트 측에서 정보를 저장하는 작은 데이터 파일이고,  세션은 서버 측에서 사용자 상태를 관리하기 위한 방법입니다 쿠키와 세션의 큰 차이점은 사용자의 정보가 저장되는 위치이며  쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용합니다 보안 면에서 세션이..
[ #7 ] 브라우저의 작동방식에 대해서 설명해주세요 키워드 : 단계별로 상세한 프로세스를 나눠서 설명 사용자가 URL을 입력하면 브라우저는 웹 서버에 HTTP 요청을 보내고 데이터를 수신합니다. 받은 HTML과 CSS는 파싱되어 DOM과 CSSOM 트리를 생성하며, 이들은 렌더 트리로 병합됩니다. 렌더 트리를 기반으로 레이아웃 단계에서 각 요소의 크기와 위치를 계산합니다. 계산된 정보로 화면에 페이지를 그리는 페인팅 단계가 이루어집니다. 필요한 JavaScript가 실행되고 모든 요소가 로드되면 페이지가 완성되어 사용자와 상호 작용합니다 출처 : https://velog.io/@theon2/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%9D%98-%EC%9E%91%EB%8F%99%EB%B0%A9%EC%8B%9D%EC%97%90-%..
[ #6 ] CORS(Cross Origin Resource Sharing)에 대해 설명해주세요 키워드 : SOP, CORS 필요 이유, CORS 정의 교차 출처 리소스 공유 정책, 브라우저에서 다른 출처의 리소스를 안전하게 사용할 수 있도록 해주는 방법입니다 브라우저는 origin, 서버는 access-control-allow-origin 헤더를 통해 사용할 수 있습니다Origin 은 프로덕트(http, https)와 호스트(사이트 도메인)와 Post(포트번호)가 모두 합쳐진 URL 을 의미합니다 같은 프로토콜, 호스트, 포트를 사용한다면 뒤에 다른 요소들은 다르더라도 같은 출처로 인정되지만 하나라도 다를 경우, 브라우저는 동일 출처 정책상(SOP) 차단하게 됩니다 개발을 하다보면 기능상 어쩔수없이 다른 출처의 API와 상호작용을 해야하는 케이스가 있는데 이와 같은 예외사항을 두기 위해 CORS ..
[ #5 ] HTTP 메서드에 대해 설명해주세요 키워드주요 메서드 : GET, POST, PUT, PATCH, DELETE기타 메서드 : HEAD, OPTIONS, CONNECT, TRACE 클라이언트와 서버 사이에 이뤄지는 요청과 응답 데이터를 전송하는 방식입니다 총 9가지가 있으며 주로 GET, POST, PUT, PATCH, DELETE를 사용합니다 GET은 리소스를 조회하는 메서드로 서버에 전달하고 싶은 데이터를 쿼리를 통해서 전달합니다 POST는 요청 데이터를 처리하는 메서드로, 메시지 바디를 통해 서버로 요청 데이터를 전달하고 데이터를 처리하여 응답합니다 PUT은 리소스가 있다면 요청을 보낸 데이터를 완전히 덮어씌우고, 리소스가 없다면 새로 생성합니다 PATCH는 PUT과 다르게 리소스의 부분 변경합니다 DELETE는 요청받은 리소스를 제거..
[ #4 ] Primary Key, Foreign Key에 대해 설명해주세요 키워드 : 1:1, 1:N, N:MPK : not null uniqueFK : PK 참조 Primary Key :  관계형 데이터베이스의 기본키이며 특정 레코드를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합입니다 테이블의 각 레코드에는 하나의 Primary Key 값이 반드시 있어야 하고 NULL 값과 중복이 허용되지 않습니다 예를 들면, 사용자에게 할당되어 있는 고유한 ID가 될 수 있습니다 Foreign Key : 관계형 테이터베이스의 외래키이며 하나의 테이블에서 다른 테이블의 기본키를 참조하는 필드입니다 외래키를 통해 다른 테이블 간의 관계를 정의할 수 있으며 외래키 값이 참조하는 기본키 값과 일치하도록 데이터 무결성을 유지함으로써 참조 무결성을 보장합니다 CASCADE 제약 조건을 통해..
[ #3 ] RDBMS의 정규화에 대해 설명해주세요 키워드 : 중복데이터, 무결성 정규화는 관계형 데이터베이스의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정입니다 이를 통해 데이터베이스의 구조가 불필요한 중복을 최소화하고 데이터의 무결성을 유지할 수 있게 됩니다 그러나 정규화는 데이터베이스의 구조를 복잡하게 만들 수 있어 성능과 유지보수성을 고려하여 적절한 정규화 수준을 선택하는 것이 중요합니다 정규화는 1 정규화 ~ 6 정규화 까지 여러 과정이 존재하지만, 실제로 보통 1 ~ 3 정규화까지의 과정을 거치게 된다고 합니다. 제1 정규화란 테이블의 모든 열에는 원자값만 포함되어야 합니다 제2 정규화란 부분적 종속성을 제거하는데 초점을 맞춥니다. 부분적 종속성이란 기본 키가 아닌 부분집합의 열이 기본 키에 종속되는 경우를 말합니다. 제3 정규화..