본문 바로가기

Hacking & Security/Web

HTTP Request ~ HTTP Response

앞서 간략히 소개한 HTTP Response & Request에 대해 상세히 알아보자.


HTTP Request
    


웹 브라우저 -------- HTTP Request(요청) -----------> 웹 서버

웹 브라우저 <------- HTTP Response(수신) ---------- 웹 서버
                            

요청과 수신 사이에 패킷을 주고받는다.

Header

Body 

  

 
HTTP Request 패킷은 크게 Header와 Body사이는 빈 공백으로 구분한다.
Header에는 요청한 주소 , 버전정보 , 요청한 도메인 호스트 기타 등등이 포함되고
한칸 띄운 후 body에는 사용자가 입력했던 값들이 포함된다.


Request의 메소드는 크게 GET 과 POST 방식으로 구분되며

GET방식은 헤더부분에 모든 정보가 포함되고 BODY에는 아무것도 포함되지 않는다.

POST방식은 헤더부분에는 사용자가 요청한 주소까지만 있고 나머지 내용은 바디(본문)에 포함된다.

Request에 포함된 상세정보

1) GET/index.hmtl HTTP/1.1                           //요청 URL정보(메소드,페이지) 및 HTTP 버전

2) user-agent : MSIE 6.0; Windows NT 5.0        //사용자 웹 브라우저 종류

3) accept:text/html; */*                                //요청 데이터 타입

4)cookie: name = value                               //쿠키 (인증 정보)
5)referer:http://www.bbb.com                       //경유지 URL
6)host: duwjdtn11.tistory.com                       //요청 도메인


HTTP는 TCP계열이지만 , 타 TCP 프로토콜(Telnet ,FTP 등) 과는 다른차이 (Stateless)를 가지고 있다.
HTTP는 사용자가 특정 html을 요청하면 그 페이지를 웹브라우저에 다시 요청후 통신을 끊어버린다.
반대로 Telnet 이나 FTP의 경우 강제로 세션을 끊지 않는이상 세션을 유지해준다.

이러한 방식이 어떻게 보면 장점이지만 단점이 될 수 있다.
예를들어 , 웹 프로토콜만 가지고 인터넷 뱅킹 프로그램을 짯다고 가정해보자.
처음에 Login을 하기위해 id와 password를 입력하고 로그인했다고 하자, 그 후  자금이체를 클릭하면 다시 id와 passwor를 입력해줘야 한다.
왜냐하면 앞서 설명한 바와 같이 첫 페이지에서 요청 후 세션이 끊어져버리기 때문에 다음 페이지에서는 id와 password값을 기억을 못한다.
이러면 상당히 불편해진다..  이런걸 보완하기 위해 쿠키라는 방식을 이용한다.


저장위치에 따라 쿠키  , 세션이 나뉜다.

클라이언트에 저장되서 정보를 가지는것을 쿠키라고 하고 웹서버에 저장해서 사용자가 페이지를 요청할때마다 비교하는걸 세션이라고 한다.

쿠키와 세션을 이용하면 앞서 예시를 든 인터넷 뱅킹 프로그램의 불편성을 제거할 수 있다.


Request의 헤더부분에 메소드가 포함된다고 정리했다.

Get 메소드 : 요청URL이 가지고 있는 정보를 검색하기 위해 서버 측에 요청하는 형태.
    HTTP GET 구조 : URL + Query String
겟 메소드는 길이 제한이 있기 때문에 간단한 처리만 한다.


POST 메소드 :  게시판 등과 같은 폼 데이터 및 CGI 프로그램으로 구성된 페이지를 위한 처리방식으로 웹 브라우저와 시스템간 데이터 처리로 웹 브라우저에게는 페이지 정보만을 확인할수 있음.
    HTTP POST 구조 : URL + Query String
포스트 메소드는 길이 제한이 없어 많은 입력 데이터를 처리
GET과 POST의 큰 차이는 Header 와 Body의 구성이다.



HTTP Response

http response에 포함된 상세 정보


헤더 부분에는

1)HTTP/1.1 OK 200                    //프로토콜 버전 및 응답코드

2)Server: NCSA/1.4.2                  //웹 서버 배너 정보                                   

3)Content-type : text/html           //MIME 타입    

4)content-length:107                  //HTTP Body 사이즈


바디 부분에는
5)<html><head></head>                //페이지 구성 정보( HTML 태그 등 )

<Title>http protocole</Title>

.

.

</body></html>  



HTTP Status Code(응답코드) 종류


웹 브라우저 -------요청(get / index.html)---------->웹 서버

    <------수신(응답코드)------------------


주요 코드

200번            // 요청성공

201번            // 원격지 서버에 파일 생성

302번            // 페이지 이동

304번            // 로컬 캐쉬정보 이용
401번            // 인증실패

403번            // 접근금지

404번            // 페이지 없음

500번            // 서버에러

'Hacking & Security > Web' 카테고리의 다른 글

웹 취약점 진단제거 가이드  (0) 2019.03.03
SQL Injection  (0) 2017.11.27
웹 취약점 분류  (0) 2017.11.27
웹 기초 지식 2  (0) 2017.11.24
웹 기초 지식  (0) 2017.11.24