CategoryLearn Programming/HTTP Basic (17)

16. RESTful이란?

REST란?REpresentational State Transfer의 약자입니다. 이것은 장비간 통신을 위해 CORBA, RPC, SOAP등의 복잡한 방법을 사용하는 대신, 간단하게 HTTP를 이용하는 것이 목적입니다. REST는 자원 지향 구조(Resource Oriented Architecture)로 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 URI를 부여합니다.이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었습니다. (필등은 HTTP의 주요 저자중 한사람) 엄격한 의미로 REST는 네트워크 아키텍쳐 원리모음 입니다. 네트워크 아키텍처 원리란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 말합니다.CRUDCreate : 생성(POS..

15. JSON이란?

JSON?JavaScript Object Notation의 줄임말입니다. 경량 데이터 기술 언어로써 JavaScript(ECMAScript)에 오브젝트 표기법을 바탕으로 하고 있습니다.다룰수 있는 데이터형falsetruenull오브젝트배열수치문자열7가지 입니다.어떤식으로 사용하나요키와 값으로 데이터를 가지고있는 딕셔너리(Dictionary) 데이터를 배열로 들고있는 리스트(List)두가지 방식으로 사용가능하며 두가지를 자유롭게 조합하여 사용할 수도 있습니다.Dictionary{ 'username' : 'kendrick', 'age' : 28 } LIst[ 'red', 'blue', 'gray'] Dictionary + List[ { 'usern[me' : 'kendrick', 'age' : 28 } , ..

14. 웹공격 기술

웹 공격 기술HTTP자체는 보안 상의 문제가 일어날 정도로 복잡한 프로토콜은 아닙니다. 그러므로 프로토콜 자체는 공격 대상이 되는 경우는 없습니다. 문제는 서버와 클라이언트 그리고 서버 상에서 동작하는 웹 애플리케이션 등의 리소스입니다 이번 포스트에서는 웹 애플리케이션 공격에 대한 내용을 설명합니다.보안기능이 없는 HTTP위에서도 적었듯이 HTTP는 구조가 단순한 프로토콜 입니다. 만들 당시에도 이렇게까지 쓰일줄은 몰랐을 것 입니다 :) 그렇기 때문에 장점도 많지만 보안에 관해서는 나쁜점도 있습니다. 웹 애플리케이션에서는 인증이나 세션관리 기능을 개발자가 설계하고 구현할 필요가 있습니다. 하지만 제각각이 설계하기 때문에 각기 다르게 구현됩니다. 그 결과 보안 등급이 충분치 못하고 공격자가 악용할 수 있는..

13. Web Application - 웹 애플리케이션 / CGI / Servlet

Web Application - 웹 어플리케이션웹 애플리케이션이란?웹을 사용해서 기능을 제공하는 것을 웹 애플리케이션이라고 합니다.- 쇼핑사이트 - 인터넷 뱅킹 - SNS - 게시판 - 검색엔진 - e-러닝 대충 훑어봐도 위와같은 다양한 웹 애플리케이션이 있습니다.왜 등장하게 된걸까본래 HTTP를 사용한 웹 구조는 사전에 준비된 콘텐츠를 클라이언트의 리퀘스트에 맞게 반환하는 것 입니다. 그러나 웹 보급후 이것만으로 부족하여 프로그램이 HTML 등의 콘텐츠를 생성할 필요가 생기게 되었습니다. 이런 프로그램에 의해서 생성된 콘텐츠를 동적 콘텐츠라 부르며, 사전에 준비된 콘텐츠는 정적 콘텐츠라고 부르고 있습니다. 웹 애플리케이션은 동적 콘텐츠에 해당합니다.CGICommon Gateway Interface(이하..

12. HTML / CSS

HTMLHTML이란?Hyper Text Markup Language의 약자이며 WWW 문서를 작성하는 Markup Language입니다. 하이퍼 텍스트(Hyper Text)란 하나의 문서(Text)로 두는 것이 아닌 문서와 문서를 상호 연결하여 접근 방식을 다양화 시킨 문서를 의미합니다. HTML은 여러 태그로 구성되어 있으며, 각 태그를 사용하여 원하는 문서를 만들 수 있습니다.태그란?Tag태그란 정보를 정의하는 형식입니다.컨텐츠를 감싸서 그 정보의 성격과 의미를 정의합니다.태그는 시작과 끝이 존재합니다. ex) 닫히는 태그가 필요없는 태그도 있습니다. 이런경우 과 같이 사용합니다. ex) HTML의 기본구조 문서의 머리 부분 문서의 몸통 부분 HTML로 쓰여진 문서를 브라우저에서 열면 렌더링 처리 된..

11. HTTP를 이용한 인증방식 - BASIC, DIGEST, SSL, FORM

HTTP 인증컴퓨터는 모니터 앞에 사람이 누구인지 알 수가 없습니다. 그렇기 때문에 아래의 요소들을 이용하여 인증을 사용하고 있습니다패스워드 : 본인만이 알고 있는 문자열 원타임 토큰 : 본인만이 가지고 있는 기기 등에 표시되는 한 번 쓰고 버리는 패스워드 등의 정보 전자 증명서 : 본인(단말기)이 가지고 있는 정보 바이오 매트릭스 : 지문이나 홍채 등 본인의 신체정보 IC 카드 등 : 본인만이 가지고 있는 정보 HTTP에서 사용하는 인증 방법HTTP/1.1에서 이용할 수 있는 인증방식은 아래와 같습니다.익명익명 요청은 인증정보를 포함하지 않는 요청을 말합니다. 리소스에 대한 모든 액세스 권한을 부여하는 것과 같습니다.BASIC 인증기본 인증은 클라이언트에 대한 사용자 이름과 암호를 Base64로 인코딩..

10. HTTPS란?

HTTPS란?HTTP 프로토콜은 위장이나 도난등의 보안문제가 발생할 수 있습니다. 이런 문제를 방지해주는 HTTPS에 대해 알아봅시다.HTTP의 약점HTTP는 주로 다음과 같은 약점을 가지고 있습니다.평문(암호화 하지 않은) 통신이기 때문에 도청이 가능하다. 통신 상대를 확인하지 않기 때문에 위장이 가능하다 완전성을 증명할 수 없기 때문에 변조가 가능하다 이 약점은 다른 암호화 하지 않는 프로토콜에도 공통되는 문제입니다.변조를 방지하려면?HTTP를 사용하여 안전성을 확인하는 방법은 있으나 확실하거나 편리한 방법이 현재 존재하지 않습니다. 그중에도 자주 사용되는 방법으로는 MD5나 SHA-1 등의 해시 값을 이용하는 방법과 파일의 디지털 서명을 확인하는 방법이 있습니다. 허나 MD5 등이 적절하게 수정되어..

9. 캐시

캐시리소스를 보관하는 캐시캐시는 프록시 서버와 클라이언트 로컬 디스크에 보관된 리소스 사본을 가리킵니다. 캐시를 사용할 경우 리소스를 가진 서버에 액세스를 줄이는 것이 가능하기 때문에 통신량과 통신시간을 절약할 수 있습니다.캐시 서버는 프록시 서버의 하나로 캐싱 프록시로 분류됩니다.캐시는 유효기간이 있다.유효기간이 있기때문에 같은 리소스의 리퀘스트에 대해서 항상 캐시를 돌려준다고 할 수 없습니다. 서버에서 갱신된 리소스가 있을 경우에 문제가 발생할 수 있기 때문입니다. 그래서 캐시를 가지고 있더라도 클라이언트의 요구나 캐시의 유효기간에 의해서 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 가게 되는 경우가 있습니다.클라이언트 측에도 캐시가 있다.캐시 서버(프록시)에만 캐시를 가..

8. 프록시 / 게이트웨이 / 터널

통신을 중계하는 프로그램HTTP는 클라이언트와 서버 이외에도 프록시, 게이트웨이, 터널과 같은 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능합니다. 이런 프로그램과 서버는 그 다음에 있는 다른 서버에 리퀘스트를 중계하고, 그 서버로부터 받은 리스폰스를 클라이언트에 반환하는 역할을 담당합니다.프록시서버와 클라이언트 양쪽 역할을 하는 중계프로그램 클라이언트로 부터 받은 리퀘스트를 서버에 전송합니다. 반대로 서버로부터 받은 리스폰스도 클라이언트에 전송 합니다. 중간 경유자입니다.게이트웨이다른 서버를 중계하는 서버입니다. 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것 처럼 수신합니다. 경우에 따라 클라이언트는 상대가 게이트웨이라는것을 알지 못할 수도 있습니다.클라이언트와 게이트웨이 사이를 ..

7. HTTP 상태코드

상태코드란?요청한 정보에 대한 상태확인을 할 수 있습니다. 내가 보낸 리퀘스트를 서버에서 정상적으로 처리 했는지, 에러였는지 알 수 있습니다.상태코드 클래스클래스설명1xxInformational리퀘스트를 받아들여 처리중2xxSuccess리퀘스트를 정상적으로 처리했음3xxRedirection리퀘스트를 완료하기 위해서 추가동작이 필요4xxClient Error서버는 리퀘스트 이해 불가능5xxServer Error서버는 리퀘스트 처리1xx1xx : 안내코드 100 : CONTINUE 101 : SWITCHING_PROTOCOLS , 규약을 전환 102 : PROCESSING2xx 성공(Success)2xx : SUCCESS에 관한 코드 200 : OK , 성공적으로 요구를 전달하였음. 201 : CREATED..

6. HTTP 메소드

HTTP 메소드란서버에 임무를 부여서버에 임무를 부여 할 수 있습니다. 주어진 메소드에 해당하는 일을 한다고 생각하면 됩니다.클라이언트에 지시를 내림클라이언트에서 리퀘스트 전달 시 메소드에따른 지시를 내릴수 있습니다. 이는 서버에서 부여한 임무에 해당할 경우 동작합니다.HTTP메소드의 종류메소드설명GET리소스 취득POST엔티티 바디 전송PUT파일 전송HEAD메시지 헤더 취득DELETE파일 삭제OPTIONS서포트하고 있는 메소드 문의TRACE경로 조사CONNECT프록시에의 터널링 요구GET - 리소스 획득GET메소드는 리퀘스트 URI로 식별된 리소스를 가져올 수 있도록 요구합니다. 가져올 리소스 내용은 지정된 리소스를 서버가 해석한 결과입니다.POST - 엔티티 전송POST 메소드는 엔티티를 전송하기 위해..

5. HTTP 프로토콜 - 서버간의 통신/리퀘스트/리스폰스/쿠키

HTTP 프로토콜HTTP의 클라이언트-서버 통신TCP/IP에 다른 프로토콜과 마찬가지로 HTTP도 클라이언트와 서버간에 통신을 합니다. 텍스트나 이미지등을 요청하는 쪽이 클라이언트가 되며, 이런 리소스를 제공하는 쪽이 서버가 됩니다.리퀘스트와 리스폰스를 교환하여 통신클라이언트를 리퀘스트를 송신하게 됩니다. 리퀘스트를 받은 서버는 리스폰스를 클라이언트에게 돌려줍니다. 서버측은 리퀘스트를 받지않고서 리스폰스를 송신하는 일이 없습니다.HTTP는 상태유지를 하지 않는다.HTTP는 상태를 계속 유지하지 않는 Stateless 프로토콜 입니다. 즉 클라이언트,서버 모두 이전에 보냈던 리퀘스트나 이미 되돌려준 리스폰스에 대해서는 전혀 기억하지 않습니다. 새로운 리퀘스트가 보내질 때 마다 새로운 리스폰스가 생성됩니다...