본문 바로가기

전체 글145

HTTP 기본 인증(Basic Authentication) 기본 개념 웹 서비스에서 사용할 수 있는 인증 방법은 여러 가지가 있다. 대표적으로는 폼 인증(Form Authentication), HTTP 기본 인증(Basic Authentication), OAuth2 등이 있다. 그중에서 HTTP 기본 인증(Basic Authentication)에 대해 포스트를 작성해보려고 한다. HTTP 기본 인증 HTTP 기본 인증은 보안 엔드포인트에 서비스 클라이언트를 인증하기 위해 사용자 명 및 비밀번호를 사용해 사용자가 누군인지 증명하는 작업이다 헤더에 보낼 수 있는 형태로 암호화 인증정보를 그대로 노출시켜 버리면 Hearder정보를 보고 인증정보를 가져갈 수 있다. 그래서 우리는 해당 정보를 암호화 할 필요가 있다. 이 암호화를 도와주는게 base64 (en-US) 이다. cre.. 2024. 3. 23.
[HTTP] 캐시 무효화 & 전략 1. 캐시 무효화(Cache Busting) "캐시 무효화"란 프록시 캐시 서버나 웹 브라우저 캐시 등 캐시 시스템에 저장된 캐시 데이터를 삭제하거나 삭제하는 행위를 말한다. 그렇다면 캐시 무효화 전략이 필요한 것일까요? 그 이유는 다음과 같다. 웹 브라우저가 GET 요청을 받으면 서버가 캐시 헤더를 제공하지 않더라도 최적화 목적을 위해 임의로 캐싱을 할 수 있다. 그리고 리소스의 캐시 수명이 장기간으로 설정되어 오래된 정보가 사용자에게 표시될 수 있는 경우가 있다. 이러한 경우 업데이트된 데이터가 정확하게 반영되도록 캐시를 무효화해야 합니다. 기본적으로 브라우저는 일반적으로 캐시 제어 헤더에 지정된 캐시 유효 기간이 만료될 때까지 서버에서 유효성 검사를 요청하지 않기 때문에 문제가 발생합니다. 즉, 캐.. 2024. 3. 18.
[HTTP] 프록시(Proxy) 캐시 서버 프록시(Proxy) 캐시 서버 중개자 역할을 하는 프록시는 클라이언트와 원(origin)서버 사이에서 통신을 용이하게 함으로써 클라이언트의 요청을 대신 원(origin)서버에서 받아서 클라이언트에게 주는 역할을 한다. 주요 기능은 자주 사용하는 리소스(예: 웹 페이지, 이미지, 비디오 등)의 복사본을 프록시 서버에 저장하여 해당 리소스에 대한 후속 요청이 원(origin) 서버에서 다시 가져오는 대신 프록시 서버에서 직접 제공할 수 있다. 이 프록시 서버를 캐시 서버로서 이용할 수 있다. 예를 들어 한국에 있는 클라이언트가 미국에 있는 서버를 이용해야 되는 상황이라면 지리적으로 너무 먼 미국 서버에서 리소스들을 가져와야 된다면 상대한 시간이 소요 될 것이다. 그래서 이를 해결하기 위해 프록시 캐시 서버를.. 2024. 3. 18.
[HTTP] HTTP 헤더 캐시 이해하기 HTTP 캐시(Cashe)의 등장 이유 사용자가 브라우저를 열람 시 많은 리소스(이미지, css, script 등등)들이 필요하다 이런 리소스들을 항상 서버에서 다운받고 이를 사용자한테 서비스를 제공한다면, 사용자들은 페이지 로딩 시 많은 시간을 보냄으로써 안좋은 서비스 경험을 만들수 있다 또 네트워크 사용량이 증가해서 서비스 제공자한테는 금전적으로 부담이 된다. 이런 걸 해결하기 위해서 무조건 필요한 리소스들을 매 번 서버에서 받아오는게 아니라 어느 저장소에 저장하고 같은 요청이오면 저장소에서 리소스들을 꺼내면 되지 않을까 해서 만들어진게 바로 cashe라는 개념이다 캐시(Cashe)의 개념 캐시는 사용자가 서비스를 이용하는 과정에서 재사용할 수 있는 리소스들을 캐시 저장소에 임시로 저장하는 공간이다 .. 2024. 3. 18.
[HTTP] 쿠키 이해하기- 파라미터 쿠키(Cookie)란? HTTP는 요청과 응답을 교환한 후 서버 연결을 끊는 무상태 프로토콜입니다. 이는 서버가 새 요청을 수신해도 이전 요청을 기억하지 않는다는 것을 의미한다. 이 문제를 해결하기 위한 한 가지 방식은 모든 요청에 ​​사용자 정보를 포함하는 것입니다. 그러나 이 방법은 보안 위험을 초래하고 개발이 복잡해진다. 쿠키는 이 문제에 대한 해결책을 제공한다. 이는 웹 서버에서 사용자 브라우저로 전송되는 작은 데이터 조각으로, 일반적으로 키=값 형식이다. 브라우저는 이러한 쿠키를 저장했다가 동일한 웹사이트를 다시 요청할 때 서버로 다시 전송한다. 쿠키에 흐름 서버에서 set-cookie에 정보(key, values로 구성)를 저장한 뒤 웹 브라우저 내부에 해당 쿠키를 쿠키 저장소에 저장한다. 브.. 2024. 3. 13.
[HTTP] HTTP Header - 개념, 표현 헤더, 협상 HTTP Header란? HTTP메세지에 속해 있으며, HTTP 헤더 value에는 HTTP 전송에 필요한 모든 부가정보가 들어가있다. 임의의 헤더도 추가 가능 하지만 약속한 클라이언트랑 서버만 이해를 할 수 있다. HTTP 헤더의 특징 field-name은 대소문자 구문 없음 띄어쓰기 위치가 중요하다 value는 대소문자를 구문한다 부가정보에는 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등등 많은 정보들이 있는데 수 많은 표준 헤더가 있기 때문에 아래 사이트를 보고 참고하는게 좋다 List of HTTP header fields - Wikipedia - 표준 헤더 HTTP 헤더의 역사 HTTP헤더의 역사는 크게 RFC2616, RFC723x로.. 2024. 3. 13.
[HTTP] 상태 코드 - 상태 코드는 왜 필요할까? 및 종류 상태 코드는 왜 필요할까? 저는 왜? 이걸 사용하지라는 생각을 많이 하는데 글을 쓰면서 한 번 내용을 정리하기로 했다. 아래 내용은 상태코드가 왜 필요한가에 대해서 설명을 위해 예시를 들었다 로그인 실패 과정 1. 내가 보낸 아이디, 패스워드는 POST 요청을 통해 서버로 전달되었다. 2. 서버는 방금 나의 요청에 대해 인증에 실패해서 '아이디 또는 패스워드가 잘못 입력되었습니다.'라는 문구를 내가 보고 있는 페이지로 보냈다. 3. 그런데 아래 사진을 보면 크롬에서는 '비밀번호를 업데이트하시겠습니가?' 라는 창을 띄울까? 위에 설명한 로그인 실패 과정에서 드는 의문점은 '아이디 또는 패스워드가 잘못 입력되었습니다.'를 보고 인증에 실패했다는 사실을 알 수 있다 하지만 로그인에 실패했는데도 브라우저는 내가.. 2024. 3. 12.
[HTTP] 웹 브라우저 요청 흐름 웹 브라우저 요청 흐름 1. 도메인 서버에서 도메임 이름을 검색한다. 2. HTTP 메세지 전송 2-1. HTTP 요청 메세지 생성 2-2. 패킷 생성 2-3. HTTP이 안에 있는 패킷이 서버에게 전달 3. 서버가 패킷을 전달 받으면 HTTP 응답 메세지 전송 4. 웹 브라우저 HTML 렌더링 참조: 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 2024. 3. 12.
[HTTP] 인터넷과 네트워크 기본 개념(IP, TCP/UDP, PORT, DNS) IP(Internet Protocol) 네트워크에서 장치를 식별하는 데 사용되는 고유한 숫자 IP는 인터넷 프로토콜 역할을 수행한다. 프토로콜이란 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 합니다.즉 통신 규약 및 약속이다. 지정한 IP 주소에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 패킷을 보내는 상대방이 패킷을 받을 수 없는 상태지만 패킷을 전송 비신뢰성 중간에 패킷이 사라지거나 패킷의 순서를 보장하기 힘듬 패킷 순서를 보장할 .. 2024. 3. 12.
HTTP 기본 개념- Stateful, Stateless, 비 연결성, 지속 연결 HTTP 통신에서 서버, 클라이언트간 연결은 Stateful, Stateless방식을 사용한다. 서버, 클라이언트간에 연결을 유지하는것, 서버가 클라이언트의 상태를 저장하고 있는지에 따른 차이점이 있다 Stateful(상태유지): "서버"가 "클라이언트"의 상태를 기억 즉 상태 유지 Stateless(무상태): "클라이언트"가 애초에 접속할 때 "서버"에게 필요한 상태를 제공하는 것 Stateful, Stateless의 특징 Stateful에서 서버가 변경 된다면 원하는 데이터가 없어지므로 오류가 발생한다. 중간에 서버가 변경된다면 변경된 서버에 미리 데이터를 전송해야 된다. 반대로 Stateless(무상태)에서는 서버가 변경되어도 오류가 발생하지 않는다. 즉 무상태 프로토콜(Stateless)에서는 응.. 2024. 3. 12.