HTTP는 하이퍼텍스트 전송 프로토콜의 약자로, 네트워크를 통해 데이터를 전송하는 데 사용되는 프로토콜 또는 정보를 표현하기 위한 규정된 순서와 구문입니다. 웹 사이트 콘텐츠 및 API 호출을 포함하여 인터넷을 통해 전송되는 대부분의 정보는 HTTP 프로토콜을 사용합니다. HTTP 메시지에는 요청과 응답이라는 두 가지 주요 유형이 있습니다.
OSI 모델에서 HTTP는 계층 7 프로토콜입니다.
HTTP 요청은 HTTP 프로토콜을 따르는 일련의 텍스트 줄입니다. GET 요청은 다음과 같이 보일 수 있습니다.
GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en
사용자의 브라우저에서 생성된 이 텍스트 섹션은 인터넷을 통해 전송됩니다. 문제는 연결을 모니터링하는 모든 사람이 읽을 수 있는 일반 텍스트로 이렇게 전송된다는 것입니다. (HTTP 프로토콜에 익숙하지 않은 분들은 이 글을 이해하기 어려울 수 있지만, 프로토콜의 명령어와 구문에 대한 기본적인 지식이 있는 분이라면 누구나 쉽게 이 글을 읽을 수 있습니다.)
이는 사용자가 웹 사이트나 웹 애플리케이션을 통해 중요한 데이터를 제출할 때 특히 문제가 됩니다. 이 데이터는 비밀번호나 신용카드 번호나 양식에 입력된 기타 데이터일 수 있으며, HTTP에서는 이 모든 데이터가 누구나 읽을 수 있도록 일반 텍스트로 전송됩니다. (사용자가 양식을 제출하면 브라우저에서는 이를 HTTP GET 요청이 아닌 HTTP POST 요청으로 변환합니다.)