목록학습/그림으로 배우는 Http & Network Basic (10)
나의 독학은
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cQK4PI/btsut5Eux5w/KVwH5AIL3P6QVYVOII7rN0/img.jpg)
11.1 웹 애플리케이션에 대한 공격 패턴 ✅ 능동적 공격 : 공격자가 웹 애플리케이션에 액세스해서 공격 코드를 보냄 ex) SQL인젝션, OS 커맨드 인젝션 ✅ 수동적 공격 : 함정을 이용해서 유저가 공격 코드를 실행시키는 공격 ex) 크로스 사이트 스크립팅(XSS), 크로스 사이트 리퀘스트(CSRF) 11.2 출력 값의 이스케이프 미비로 인한 취약성 ❗❗이스케이프 : 특정 문자나 문자열을 일반 텍스트로 해석하지 않고 특별한 용도로 사용하기 위해 특수한 문자로 처리하는 것 ex) 역슬래시(\)를 사용하여 특수한 문자를 나타냄. \n (줄 바꿈 문자) , \t (탭 문자) , \\ (역슬래시 자체) ✅ 크로스 사이트 스크립팅 - 동적으로 HTML을 생성하는 부분에서 취약성이 발생 - 아이디와 패스워드를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ckjK3o/btst86Kutiq/oHeFV0ocoEj75uY5XakxRK/img.jpg)
9.3 브라우저에서 양방향 통신을 하는 WebSocket ✅ WebSocket 프로토콜 - 핸드쉐이크로 최초 접속할 때는 HTTP 프로토콜을 이용, 그 후로는 WebSocket 프로토콜 이용 - 한 번 접속을 하면 서버와 클라이언트 어느 쪽에서도 송신이 가능하다. ✅ 특징 1. 서버 푸시 기능 → 서버는 클라이언트의 리퀘스트를 기다리지 않고 데이터 보냄 2. 통신량의 삭감 → 접속을 유지함으로써 접속하는데 필요한 오버헤드의 양과 헤더의 사이즈를 줄임 3. 실시간 네트워킹 → 채팅, 주식, 비디오 데이터 등 실시간 데이터가 필요한 곳에 사용 4. 핸드쉐이크/리퀘스트 및 리스폰스 → HTTP의 Upgrade 헤더 필드를 사용하여 핸드쉐이크를 실시함. 핸드쉐이크 리퀘스트 메시지 핸드쉐이크 리스폰스 메시지 내용..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bboTrq/btstMBMdRmk/qEKBOUVFEeHTBwfYFLznsK/img.jpg)
8.4 SSL 클라이언트 인증 - HTTPS의 클라이언트 인증서를 이용한 인증 방식 ✅ SSL 클라이언트 인증의 인증 수순 1. 인증이 필요한 리소스의 요청이 있을 경우 서버는 클라이언트에게 클라이언트 인증서를 요구하는 "Certificate Request" 메시지를 송신 2. 유저는 송신할 클라이언트 증명서를 선택 후, "Client Certificate"라는 메시지와 함께 증명서 송신 3. 서버는 클라이언트 증명서를 검증함. 결과가 정확하다면 클라이언트의 공개키를 취득한 후, HTTPS에 의한 암호를 개시함. ✅ SSL 클라이언트 인증은 2-factor 인증에서 사용 *2-factor 인증 : SSL 클라이언트 인증과 다른 인증 방법을 함께 사용하는 인증 방식 ex) SSL인증 + 폼 베이스 인증 o..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ne1iS/btstCFGlP29/OU4Z9wmab5mr9taGJe5Eg0/img.png)
7.1 HTTP의 약점 ✅ 암호화 하지 않은 통신이기 때문에 도청이 가능 원인 : TCP/IP 기반의 통신은 전부 통신 도중에 엿볼 수 있다. 해결 : - SSL(Secure Socket Layer)이나 TLS(Transport Layer Security)라는 다른 프로토콜을 HTTP와 조합하여 통신을 암호화 - HTTP메시지에 포함되는 콘텐츠만 암호화 ✅ 통신 상대를 확인하지 않기 때문에 위장이 가능 원인 : HTTP를 사용한 리퀘스트나 리스폰스는 누가 보냈는지 누가 응답했는지 상대를 확인하지 않는다 해결 : SSL에서 제공하는 증명서를 통해 증명서를 갖고 있는 상대에게만 요청 및 응답한다. ✅ 완전성을 증명할 수 없기 때문에 정보 변조가 가능 원인 : 통신 중에 콘텐츠가 다른 것으로 바뀌었을 수도 있..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bp0j32/btstzvKjoUC/U390aPSVV4JVIrNQxZnWa1/img.jpg)
6.1 HTTP 메시지 ✅ HTTP 메시지 구조 (리퀘스트 메시지, 리스폰스 메시지) 6.2 HTTP 헤더 필드 ✅목적 - 클라이언트와 서버간의 통신을 위해 - 중요한 정보 전달을 위해 - 메시지 바디의 크기나 사용 언어, 인증 정보를 서버에 제공하기 위해 ✅구조 - 헤더 필드 명 : 필드 값 ex) Content-Type : text/html ✅ HTTP 헤더 필드는 4종류로 나뉜다 - 일반 헤더 필드 - 리퀘스트 헤더 필드 - 리스폰스 헤더 필드 - 엔티티 헤더 필드 ✅ HTTP1.1 이외의 헤더 필드 Set-Cookie, Content-Disposition와 같이 RFC에 정의되어 폭 넓게 사용되기도 한다. *RFC : HTTP, TCP/IP, DNS와 같이 인터넷에 쓰이는 기술들을 다 적어 놓은 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RIVa8/btsth8CHzgW/8JadwFDU8hPNzJOk5witU1/img.jpg)
5.1 1대로 멀티 도메인을 가능하게 하는 가상 호스트 ✅개념 가상 호스트 : 물리적으로는 서버가 1대지만 가상으로 여러 대가 있는 것처럼 여러 도메인을 가지고 있다. ✅작동 방식 ①인터넷에서 요청한 도메인명은 DNS에 의해 IP주소로 변환되어 서버에 도착한다. ②가상 호스트를 쓰는 1대의 서버 안에는 여러 도메인이 있기 때문에 서버는 어떤 도메인을 반환할지 모르게 된다. 그렇기 때문에 HTTP 요청을 보낼 경우에는 ③호스트명과 도메인 명을 완전히 포함한 URI를 지정하거나 Host 헤더 필드에서 지정해야 한다. 5.2 통신을 중계하는 프록시, 게이트웨이, 터널 프록시 게이트웨이 터널 개념 클라이언트와 서버 사이에 존재하여 양 쪽간의 통신을 도와주는 프로그램 특징 프록시 서버를 경유할 때마다 "Via" ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/be9c2k/btstkXHGgGM/Zl5dtwe4xKfWFj4tiUBssk/img.jpg)
4. 상태 코드는 서버로부터 요청 결과를 전달한다. *상태 코드 : 클라이언트의 요청이 서버에서 어떻게 처리가 되었는지 서버가 클라이언트에게 알려주는 것 ✅상태 코드 클래스 클래스 설명 1xx Informational 요청을 받아들여 처리중 2xx Success 요청을 정상적으로 처리 3xx Redirection 요청을 완료하기 위해 추가 동작이 필요 4xx Cilent Error 서버는 요청을 이해 하지 못함 5xx Server Error 서버는 요청 처리 실패 ✅2xx 성공(Success) - 200 OK: 서버가 요청을 정상 처리했다. - 204 No Content : 서버가 요청을 처리했지만 엔티티 바디(리소스)를 되돌려 주지 않는다. - 206 Partial Content : 서버가 범위가 지정..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pZzmH/btsth7w6jvJ/jVIQam1X4NuajA8MudGyu0/img.jpg)
3.1 HTTP 메시지 ✅HTTP 메시지 구조 *메시지 헤더 : 전송되는 데이터의 메타 정보 (부가 설명) *메시지 바디 : 전송되는 실제 데이터 3.3 메시지 바디와 엔티티 바디의 차이 ✅ 메시지 vs 엔티티 - 메시지 : HTTP 통신의 기본 단위로 8비트로 구성되고 통신을 통해 전송된다. - 엔티티 : 요청과 응답의 부가물(payload)로 전송되는 정보로 엔티티 헤더 필드와 엔티티 바디로 구성된다. *엔티티는 웹 페이지, 텍스트, 문서, 이미지, 비디오 같은 것 HTTP 메시지 바디의 역할은 엔티티 바디를 운반하는 일이다. 기본적으로는 메시지 바디와 엔티티 바디는 같지만 전송 코딩이 적용된 경우 둘은 달라지게 된다. *전송 코딩 : 큰 데이터를 전송할 때 엔티티 바디를 분할(청크)하는 것으로 청크..