Chapter 02 웹의 이해
01 웹의 탄생 02 HTTP의 기본 개념 03 웹 애플리케이션 기술
웹의 탄생 배경에 대한 기본 지식을 갖춘다. 웹 서비스를 제공하기 위해 사용되는 주요 프로토콜을 학습한다. 웹 애플리케이션 기술을 학습한다.
1.1 웹의 탄생 월드와이드웹 인터넷에 연결된 컴퓨터들이 하이퍼텍스트 형식으로 표현된 다양한 정보를 효 과적으로 이용할 수 있도록 구성한 전 세계적인 시스템 간단히 웹이라고 부름.
1.1 웹의 탄생 웹의 탄생 1989년 3월 13일, 유럽입자물리연구소(CERN)에 근무하던 소프트웨어 공학자 팀 버너스 리가 과학자들 사이에 쉽게 정보를 주고받기 위한 목적으로 정보 관 리 제안서를 발표(최초의 인터넷 기반 하이퍼텍스트 프로젝트) 이후 1990년에 하이퍼텍스트 브라우저와 편집기가 개발되고 URL, HTTP, HTML이 차례대로 설계됨. 1991년 8월 팀 버너스 리는 월드와이드 웹의 개념을 포함한 사이트를 일반인에 게 최초로 공개하고, 로열티를 포기
1.1 웹의 탄생 초창기 웹 단순한 텍스트와 링크 위주 하이퍼텍스트 : 글자에 링크를 걸어놓고 클릭하면 다른 화면이 나타나는 것 하이퍼링크 : 한 페이지에서 다른 페이지의 문서로 쉽게 이동 웹 서핑, 웹 브라우징 : 하이퍼링크를 따라 이동하는 것
1.1 웹의 탄생 http://archive.org 접속 웹 사이트의 과거 기록을 저장해놓은 인터넷 아카이브(http://archive.org) 접속
1.1 웹의 탄생 Daum 사이트의 아카이브 기록 검색 주소 입력 부분에 ‘www.daum.net’을 입력하고 <GO> 클릭
1.1 웹의 탄생 특정 연도의 Daum 사이트 열람 화면의 상단 그래프에서 특정 연도를 선택한 뒤 하단 달력에 표시된 부분 클릭
2.1 Request HTTP(hypertext transfer protocol) 인터넷에서 가장 많이 사용하는 프로토콜(팀 버너스 리가 웹을 만들면서 개발) 문서 간의 상호 연결을 통해 다양한 텍스트, 그래픽, 애니메이션을 화면에 보여 주고 사운드를 재생
2.1 Request HTTP(hypertext transfer protocol) 0.9 버전의 HTTP는 서버에서 단순히 읽기 기능만 지원 현재 웹에서 주로 사용하는 HTTP는 1.0과 1.1 버전 HTTP 1.0 : 1996년 5월에 완성되었으며, 메소드는 GET, HEAD, POST 방식만 지원 HTTP 1.1 : 2001년에 공식 발표되어 메소드는 OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 방식 지원
2.1 Request Request 첫 번째 줄: GET / HTTP /1.1 HTTP 전송 방법 : 웹 서버로부터 자료를 가져오는 기능을 하는 GET을 많이 사용 (GET 메소드는 별도의 메시지 보디를 필요로 하지 않음) 요청된 URL : 웹 서버에 있는 자료를 요청할 때 사용되는 경로 HTTP 버전 : 인터넷에서 가장 일반적으로 사용되는 HTTP 버전은 1.0과 1.1(대부 분의 브라우저는 초깃값으로 1.1 사용) GET / HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Encoding: gzip, deflate Cookie: HSID=AaxlkKoV2snlEi6UQ; SSID=AAYVu_evC0Tiu3aVc; APISID=JEWp0eojRTLFtYKJ/ACgEWh_0mL8Li_-fl; SAPISID=kabRBO-uT0ebDcfc/A2byDX--FwN649tHw Host: www.google.comConnection: Keep-Alive Accept-Language: ko-KR User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
2.1 Request 웹 해킹과 관련된 요소 서버가 클라이언트에 전송한 인자값에 추가 정보를 보낼 때 사용 URL 주소에 나타난 호스트명을 자세하게 나타내기 위해 사용 브라우저나 기타 클라이언트의 소프트웨어 정보를 보여줌. GET 방식은 요청 데이터에 대한 인수를 URL을 통해 웹 브라우저로 전송(링크 주소만 알아도 연결된 페이지의 내용 확인 가능) Cookie: HSID=AaxlkKoV2snlEi6UQ; SSID=AAYVu_evC0Tiu3aVc; APISID= JEWp0eojRTLFtYKJ/ACgEWh_0mL8Li_-fl; SAPISID=kabRBO-uT0ebDcfc/A2byDX--FwN649tHw Host: www.google.com User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) http://www.hanb.co.kr/edu/view_detail.html?hi_id=363
2.1 Request POST 일반적인 게시판에서의 GET 방식과 POST 방식의 사용 HTTP의 보디 영역에 소켓을 이용하여 데이터를 전송 URL을 통해 인수값을 전송하지 않기 때문에 다른 사람이 링크를 통해 해당 페 이지를 볼 수 없음. 보내려는 인자값이 URL을 통해 노출되지 않아 보안 측면에서 GET 방식보다 안전 일반적인 게시판에서의 GET 방식과 POST 방식의 사용 목록이나 글을 보는 화면에는 접근 자유도를 부여하기 위해 GET 방식 사용 글을 저장 · 수정 · 삭제하는 작업을 할 때는 보안을 위해 POST 방식 사용
2.1 Request POST 메소드의 예 POST / HTTP/1.0 Accept: */*X-CI: 126323033 X-AT: OVERNET X-GO: 1;KR;842;9530 X-DM: www.google.co.kr X-SP: 762 Host: dr1.webhancer.com Content-Length: 0 Pragma: no-cache Connection: Close
2.1 Request Request 패킷의 메소드 HEAD : 서버 쪽 데이터를 검색하고 요청하는 데 사용 OPTIONS : 자원에 대한 요구- 응답 관계에서 관련된 선택 사항에 대한 정보를 요청할 때 사용 PUT : 메시지에 포함되어 있는 데이터를 지정한 URI 장소에 지정된 이름으로 저장 DELETE : URI에 지정되어 있는 자원을 서버에서 지울 수 있게 함. TRACE : 요구 메시지의 최종 수신처까지 루프백 검사용으로 사용
2.2 Response Response 클라이언트가 보낸 Request의 응답 패킷으로 형식이 간단함. Response 패킷에 담긴 주요 내용은 서버에서 쓰이는 프로토콜 버전, HTTP 상 태 코드(200 OK) 등이며, 전달할 데이터의 형식, 데이터 길이 등과 같은 추가 정보가 포함되어 있음.
2.2 Response HTTP 상태 코드
2.2 Response HTTP 세부적인 상태 코드
2.2 Response HTTP 세부적인 상태 코드 설명 200 OK : 클라이언트의 요청이 성공했다는 것을 나타냄. 201 Created : 클라이언트의 PUT 요청이 성공적이라는 것을 나타냄. 301 Moved Permanently : 브라우저의 요청을 다른 URL로 항시 전달 302 Moved Temporarily : 브라우저의 요청을 임시 URL로 바꾸고 Location 헤더에 임시로 변경한 URL의 정보를 적음(클라이언트가 다음에 같은 요청을 하면 기존 URL로 돌아감). 304 Not Modified : 브라우저가 서버에 요청한 자료에 대해 서버는 클라이언트 내에 복사된 캐시를 사용하면 된다는 것을 의미 400 Bad Request : 클라이언트가 서버에 잘못된 요청을 했다는 것을 나타냄. 401 Unauthorized : 서버가 클라이언트의 요청에 대해 HTTP 인증 확인을 요구 403 Forbidden : 클라이언트의 요청에 대해 접근을 차단 404 Not Found : 클라이언트가 서버에 요청한 자료가 존재하지 않음 405 Method Not Allowed : 클라이언트가 요청에 이용한 메소드는 해당 URL에 지원이 불가능함. 413 Request Entity Too Large : 클라이언트가 요청한 보디가 서버에서 처리하기에는 너무 큼. 500 Internal Server Error : 서버가 클라이언트의 요청을 실행할 수 없을 때 500 상태 코드가 발생 (SQL 인젝션 취약점이 존재하는지 확인할 때 유용)
2.2 Response HTTP 1.0 문서에 몇 개의 그림이 있든 상관없이 텍스트가 저장된 HTML 문서를 먼저 전 송받은 후 연결을 끊고 다시 연결하여 그림을 전송받음.
2.2 Response HTTP 1.1 연결 요청이 계속 들어오면 HTML 문서를 받은 후 바로 그림 파일을 요청
2.2 Response
2.2 Response JRE 다운로드 및 설치 Burp Suite 다운로드 Burp Suite 사이트(http://portswigger.net)에서 Burp Suite 다운로드 Burp Suite를 내려받은 폴더에 노트패드로 Suite.bat 파일을 만들고 다음과 같 이 입력한 후 저장 java -jar –Xmx1024m burpsuite_free_v1.7.15.jar(파일 버전에 맞게 이름 수정)
2.2 Response Burp Suite 설정 웹 브라우저와 웹 서버 간의 HTTP 패킷을 보려면 Burp Suite의 [Proxy] 탭에서 <Intercept is off>를 클릭하여 <Intercept is on>으로 바꿈.
2.2 Response Burp Suite 설정 서버와 클라이언트 간에 전달되는 모든 패킷을 보려면 [Proxy]의 [Options] 탭 에서 ‘Intercept Client Requests’의 ‘Intercept requests~’와 ‘ Intercept Server Responses’의 ‘ Intercept responses~’에 모두 체크 표시가 되어있는지 확인
2.2 Response 프록시 설정 웹 브라우저의 [도구]-[인터넷 옵션] 선택 후 [인터넷 옵션] 대화상자에서 [연결] 탭을 선택하여 <LAN 설정> 클릭
2.2 Response 프록시 설정 [LAN 설정] 대화상자에서 프록시 서버에 체크 표시를 하고, 주소 항목에 ‘127.0.0.1’, 포트 항목에 ‘8080’을 입력한 후 <확인> 클릭
2.2 Response 패킷 확인 웹 브라우저를 이용하여 임의의 웹 사이트에 접속 패킷을 확인한 후 전송하려면 Burp Suite의 [Proxy]-[Intercept] 탭을 선택하면 나타나는 창에서 <Forward>를 클릭
3.1 서버 측 기능 서버 측 기능 웹 애플리케이션이 이용하는 서버 측 기능 초기의 웹 서버는 단순한 정적 페이지 제공 현재는 입력한 값에 따라 다양한 결과를 화면에 보여주는 동적 기능 제공 웹 애플리케이션이 이용하는 서버 측 기능 ASP, JSP, PHP, VBScript, 펄과 같은 서버 측 스크립트 언어 아파치, IIS, 넷스케이프 엔터프라이즈와 같은 웹 서버 Microsoft SQL Server, 오라클, 사이베이스, MySQL과 같은 데이터베이스
3.1 서버 측 기능 서버 측 스크립트 언어 웹 서버 클라이언트가 요청한 데이터를 서버 측에서 처리하여 원하는 결과를 돌려주기 위해 사용하는 언어 윈도우 계열 기반은 주로 ASP, 웹 애플리케이션 플랫폼에는 주로 JSP 사용 웹 서버 일반적으로 많이 사용하는 웹 서버는 아파치와 IIS
3.1 서버 측 기능 데이터베이스 데이터베이스 관리 시스템(DBMS) : 데이터베이스를 관리하는 소프트웨어 DBMS에는 오라클, DB2, Microsoft SQL Server, 사이베이스, MySQL 등이 있음. DBMS를 사용하면 데이터베이스를 만들고 데이터를 입력 · 변경 · 검색할 수 있음.
3.2 클라이언트 측 기능 HTML 1980년 유럽입자물리연구소(CERN)의 팀 버너스 리가 HTML의 원형인 인콰이 어를 제안 1991년 말 팀 버너스 리가 인터넷에서 문서를 ‘HTML 태그’라고 부르면서 시작 HTML은 2000년부터 국제표준(ISO/IEC 15445:2000)이 됨. 2010년 8월 HTML5 Working Draft가 공개 2014년 10월 28일 HTML5가 표준으로 확정
3.2 클라이언트 측 기능 자바스크립트 객체 기반의 스크립트 프로그래밍 언어 넷스케이프커뮤니케이션의 운영자인 브렌던 아이크가 모카라는 이름으로 처 음 개발 라이브스크립트(LiveScript)라는 이름을 거쳐 자바스크립트가 됨. 성능 문제로 인해 서버 측에서 처리하지 않는 부분을 클라이언트 측에서 처리 할 수 있도록 할 때 주로 사용