본문 바로가기

HTTP9

HTTPS HTTP 통신은 암호화 되지 않은 평문으로 실시된다. 또한 HTTP 에는 통신 상대의 서버나 클라이언트를 인증하는 수단이 없다. 때문에 실제로는 의도한 통신 상대와 통신하지 않고 있을 가능성이 있고, 수신한 메시지가 도중에 변조되어 있을 가능성도 있다. 이러한 문제를 해결하기 위해 암호화와 인증과 완전성 보호 같은 구조를 HTTP 에 추가한 것을 HTTPS(HTTP Secure) 라고 한다. HTTPS 는 새로운 응용계층 프로토콜은 아니다. 보통 HTTP 는 직접 TCP와 통신하지만, SSL을 사용한 경우에는 HTTP 는 SSL 과 통신하고 SSL 이 TCP 와 통신하게 된다. 클라이언트 → 서버로 랜덤 데이터와 사용 가능한 암호화 방식을 보낸다. 서버 → 클라이언트로 랜덤 데이터, 사용할 암호화 방식과.. 2023. 4. 22.
HTTP의 보안상 약점 HTTP 에도 약점이 있는데, 주로 다음과 같은 약점을 가지고 있다. - 평문 통신이기 때문에 도청 가능 - 통신 상대를 확인하지 않기 때문에 위장 가능 - 완전성을 증명할 수 없기 때문에 변조 가능 이 약점은 HTTP 만이 아닌, 다른 암호화하지 않은 프로토콜에도 공통되는 문제이다. 또 특정 웹 서버나 특정 웹 클라이언트의 구현상의 약점, JAVA 나 PHP 로 구축한 웹 어플리케이션 취약성 등이 있다. 암호화 도청을 피하기 위해 가장 보급되어 있는 기술은 암호화 이다. 암호화는 몇 가지 대상이 있다. 1) 통신 암호화 HTTP 에는 암호화 구조는 없지만 SSL (Secure Socket Layer) 나 TLS (Transfer Layer Security) 라는 다른 프로토콜을 조합함으로써 HTTP 통.. 2023. 4. 18.
HTTP 헤더 HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있는데 메시지 헤더에는 클라이언트나 서버가 리퀘스트나 리스폰스를 처리하기 위한 정보가 들어있다. 다만 이러한 정보의 대부분은 클라이언트를 이용하는 사용자가 직접 볼 필요는 없다. 리퀘스트의 HTTP 메시지는 메소드, URI, HTTP 버전, HTTP 헤더 필드 등으로 구성되어 있으며 리스폰스의 HTTP 메시지는 HTTP 버전, 상태 코드, 헤더 필드 등으로 구성되어 있다. HTTP 헤더 필드는 그 용도에 따라 다음과 같이 분류된다. 1) 일반적 헤더 필드 (General Header Fields) 리퀘스트 메시지와 리스폰스 메시지 둘 다 사용하는 헤더이다. 헤더 필드 명 설명 Cache-Control 캐싱 동작 지정 Connecti.. 2023. 4. 14.
HTTP와 연계하는 웹 서버 가상 호스트 (Virtual Host) HTTP/1.1 에서는 하나의 HTTP 서버에 여러 개의 웹사이트를 실행할 수 있다. 예를 들면 웹 호스팅을 제공하고 있는 사업자는 1대의 서버에 여러 고객의 웹사이트를 넣을 수 있다. 고객마다 다른 도메인을 가지고 다른 웹사이트를 실행할 수 있는데 이를 위해 가상 호스트 (Virtual Host) 라는 기능을 사용하고 있다. 가상 호스트를 사용하면 물리적으로는 서버가 1대지만 가상으로 여러 대가 있는 것처럼 설정할 수 있다. 인터넷에서 도메인명은 DNS 에 의해서 IP 주소로 변환되고 나서 엑세스 하게 된다. 결국 리퀘스트가 서버에 도착한 시점에는 IP 주소를 기준으로 엑세스 하게 된다. 이 때 1대의 서버 안에 가상 호스트를 이용한 여러개의 도메인이 실행되고 있.. 2023. 4. 12.
HTTP 상태코드 클라이언트가 서버를 향해 리퀘스트를 보낼 때, 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다. 서버가 리퀘스트를 정상적으로 처리했는지, 그렇지 않으면 리퀘스트 결과가 에러였는지를 알 수 있다. 상태 코드 클래스 클래스 설명 1XX Informational 리퀘스트 받아서 처리중 2XX Success 리퀘스트를 정상적으로 처리했음 3XX Redirection 리퀘스트를 완료하기 위해 추가 작업 필요 4XX Client Error 서버는 리퀘스트 이해 불가능 5XX Server Error 서버는 리퀘스트 처리 실패 2XX 성공(Success) 1) 200 OK 클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음을 나타낸다. 리스폰스에서 상태 코드와 함께 되돌아 오는 정보는 메소드에 .. 2023. 4. 11.
Persistent connection / Stateless Persistent connection HTTP 초기 버전에서는 HTTP 통신을 한 번 할 때마다 TCP 에 의해 연결을 종료할 필요가 있었다. 초기 통신은 작은 사이즈의 텍스트를 보내는 정도였기 때문에 이렇게 기능을 구현해도 문제가 없었으나, HTTP 가 널리 보급되어 감에 따라 다량의 이미지를 포함한 문서 등이 늘어나게 되었다. 하나의 HTML 에 여러 이미지가 포함되어 있는 경우 브라우저를 사용해서 리퀘스트를 하면 HTML 문서에 포함되어 있는 이미지를 획득하기 위해서 여러 리퀘스트를 송신하게 된다. 이때 리퀘스트를 보낼 때마다 매번 TCP 연결과 종료를 하게 되어 쓸모없는 통신량이 늘어났다. 이러한 문제를 해결하기 위해 HTML 1.1 버전에서는 지속연결(Persistent connection) .. 2023. 4. 6.