한땀한땀 정성들인 코딩

웹 서비스 본문

자격증/정보보안기사

웹 서비스

romance penguin 2017. 2. 12. 20:53
반응형

프롤로그

-웹프로그램(어플리케이션)은 http프로토콜로 통신하는 네트워크 프로그램

-http프로토콜을 직접 다루는 코드를 작성하기 보

-웹 어플리케이션 서버(미들웨어)로 제품이 제공하는 환경위에서 동작

-이 미들웨어는 tcp/ip 연결관리와 http프로토콜 해석등의 네트워크 기반 작업

-보통 사용자는 요청과 응답 개념위에서 구현 시작

-웹어플서버가 제공하는 추상화된 API로 네트워크에 접근


서블릿 컨테이너

-http요청을 받아 처리

-아파치 톰캣, 제티, 그리즐리

통신지원

-통신하기위해 소켓을 생성할 필요가 없다. 즉 통신api에 신경 쓸필요가 없다.//?? webserver아님?


생명주기 관리

-서블릿클래스를 로딩하여 인스턴스화

-초기화 메소드 호출

-가비지 컬렉션


멀티스레딩

-요청이 올때마다 쓰레드 생성


선언적인 보안관리

-xml 배포 서술


아파치 TPCMon - http패킷 분석기



http프로토콜

-tcp/ip기반

-get, post 메소드

-request, response

request structure

request_line : <request_method><URL><HTTP_Ver>

-요청방식, url

request header : <header_name>:<header_value><CR><LF>

an empty line : <CR><LF>

optional mesaage body : post data


response structure

response line : <http ver><status code><status-message>

response header : <header_name>:<header_value><CR><LF>

An empty line : <CR><LF>,carriage return

message body : html contents


브라우저

-html코드 파싱

-화면출력

-크롬,파이어폭스,인터넷 익스플로어


웹서버

-클라이언트로부터 http요청을 받아들여 html문서 응답하는 소프트웨어 //기본기능

- +부가기능

웹서버 코드의 예

import socket
import os.path
import sys

DOCUMENT_ROOT = "d:/temp"
RESPONSE_TEMPLATE = """HTTP/1.1 200 OK
Content-length: {}


{}"""

def main():
    listen_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    listen_socket.bind(('', 80))
    listen_socket.listen(1)

    while True:
        connection, address = listen_socket.accept()
        request = connection.recv(1024)
        start_line = request.split('\n')[0]
        method, uri, version = start_line.split()
        path = os.path.join(DOCUMENT_ROOT, uri[1])
        if not os.path.exists(path):
            connection.sendall('HTTP/1.1 404 Not Found\n')
        else:
            with open(path) as file_handle:
                file_content = file_handle.read()
                response = RESPONSE_TEMPLATE.format(len(file_content), file_content)
                connection.sendall(response)
        connection.close()

if __name__ == "__main__":
    sys.exit(main())

패킷의 첫줄을 파싱해서 파일을 불러 읽어 보내준다.


WAS

-서버 단(사이드)에서 애플리케이션을 동작할수 있도록 지원

-컨테이너+web server

-초창기 CGI

-servlet, ASP, JSP, ASP, PHP

web server VS was(web application server)

- was = web server + web container

- web server는 http요청을 reponse해준다.

- 또 전송받은 data를 container로 전송한다.

- 컨테이너는 jsp,servlet을 처리한다.

- 웹서버의 예로 apache가 있고

- container 예로 tomcat이 있다.


java servlet

-자바를 사용

-웹페이지를 동적으로 생성하는 서버사이드 어플리케이션

-Jave EE사양의 일부분

-요청때마다 쓰레드 생성


CGI

-perl을 이용한 동적 웹페이지 생성 서버측 어플리케이션

-요청때마다 프로세스 생성


mod_php

-php 동적 웹페이지 생성


엔터프라이즈 자바빈즈

-EJB는 기업 환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델

-업무로직

-jsp는 화면로직 처리, EJB는 업무로직 처리


자바 메시지 서비스

-JMS는 자바 프로그램이 네트워크를 통해 data를 송수신하는 java api


자바 가상 머신(jvm)

-자바 bytecode를 실행하는 환경

-대부분의 플랫폼에 설치( window,linux,web browser)

-미들웨어, 플랫폼


자바 서버 페이지(jsp)

-html내에 자바 코드 삽입

-동적으로 웹페이지 생성후 웹브라우저에 반환

-.jsp -> servelt원시코드 -> .html


web service


SOAP

-xml, html등을 기본으로 하여 다른 컴퓨터에 있는 data나 서비스를 호출하는 프로토콜

-http기반 위에서 동작

-프록시, 방화벽에 구애받지 않음

-http외 전송층 프로토콜 사용가능

-플랫폼 및 프로그래밍 언어에 독립적

-xml메시지 지원


UDDI

-전역 비즈니스 레지스터리

-웹 설명서가 있는 마켓

-꼭 wsdl이 uddi에 있는것은 아니다.


WSDL

-xml기반의 마크업 언어
-웹서비스 기술언어

-설명서

<definitions>

<types>데이터 타입</types>

<message>메소드 인자와 리턴값 선언</message>

<portType>인터페이스 정의</porType>

<binding>실제 네트워크 프로토콜과 port type 매핑</binding>

<service>endpoint의 물리적 위치정의

<port>웹 서비스 URI</port>

</service>

</definitions>

반응형

'자격증 > 정보보안기사' 카테고리의 다른 글

web어플 공격기법  (0) 2017.02.12
XSS  (0) 2017.02.12
리눅스 계정관리  (0) 2017.02.10
취약점 진단도구(시스템)  (0) 2017.02.09
bof 방지기법 그외(objdump 사용,rtl chain)  (0) 2017.02.09