[정보처리기사 실기] 5. 인터페이스 구현(1)

Sua An·2021년 10월 6일
0
post-thumbnail

📌 인터페이스 기능 구현 기술

✅ JSON

  • 개념 : 속성-값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

  • 특징

    • AJAX에서 많이 사용되고, XML을 대체하는 주요 데이터 포맷
    • 언어 독립형 데이터 포맷, 다양한 데이터 프로그래밍 언어에서 사용
    • 사람이 읽고 쓰기 용이, 기계가 분석하고 생성하기에 용이
  • 표현 자료형

    • 숫자 : 기본 자료형은 정수, 실수(고정소수점, 부동소수점)
    • 문자열 : "" 사용
    • 배열 : [] 각 요소 순서에 의미 있음
    • 객체 : {} 이름/값쌍의 집합, 순서는 의미 없음
  • 장점

    • XML보다 가볍고 빠름
    • 자료 종류에 큰 제한X
    • XML은 모두 string, JSON은 다양한 자료형
    • Javascript코드 안에서 JSON 객체에 대한 접근이 쉬움
  • 단점

    • 태그가 없어서 가독성이 떨어짐
    • 데이터 형식이 틀렸을 경우 체크가 쉽지 않음

✅ XML

  • 개념 : HTML, SGML의 단점을 보완한 특수한 목적을 갖는 마크업 언어

  • 특징

    • 송수신 시스템 간 데이터 연계의 편의성을 위해 전송되는 데이터 구조를 동일한 형태로 정의
    • 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어
    • 사용자가 직접 문서의 태그를 정의할 수 있고, 다른 사용자가 정의한 태그를 사용할 수 있음
  • 문서구조

    • 규칙
      - 트리 구조, 상위 태그는 여러 개의 하위태그를 가질 수 있음
      - 모든 태그는 종료 태그를 가져야 함
      - 시작 태그와 종료 태그의 요소명칭은 동일해야함
      - 여닫는 순서 중요, 띄어쓰기 인식
      - 속성값은 "", 대소문자 구분
  • 구성

    • XML 프롤로그
      - 맨 첫줄에 <xml>태그를 사용하여 XML 문서임을 명시
      - 소문자로만 사용
      - e.g. <?xml version = "XML문서버전" encoding="언어셋" standalone="yes|no"?>
      - 구성 요소 : version, encoding, standalone

    • XML 요소
      - 시작 태그부터 종료 태그까지
      - e.g. <요소이름 속성="속성값">내용</요소이름>
      - 구성요소 : 요소이름, 속성, 내용

✅ AJAX

  • 개념
    • 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML데이터를 교환하고 조작하기 위한 웹 기술
    • 브라우저의 XMLHttpRequest객체를 이용해서 필요한 일부 페이지의 데이터만 로드
    • HTML만으로는 어려운 작업을 웹 페이지에서 구현하여 웹 페이지와 자유롭게 상호작용 할 수 있도록 구현

  • 주요 기술
    • XMLHttpRequest
      - 웹 브라우저와 서버 간 메서드가 데이터를 전송하는 객체 폼의 API
      - 비동기 통신을 담당하는 자바스크립트 객체
    • JavaScript
      - 객체 기반 스크립트 프로그래밍 언어
      - 웹 브라우저 내에서 주로 사용, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 소유
    • XML
    • DOM : XML 문서를 트리구조 형태로 접근할 수 있게 해주는 API
    • XSLT : XML문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반 언어
    • HTML : WWW 문서 표현하는 표준화된 마크업 언어
    • CSS : 마크업 언어가 실제 표시되는 방법 기술,

✅ REST

  • 개념
    : 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처

  • 기본형태
    : 리소스(자원), 메서드(처리), 메시지 요소로 구성
    • 행위에 대한 메서드
      : POST(Create), GET(Select), PUT(Update), DELETE(Delete)
    • REST 리소스
      : 모든 것을 리소스, 즉 명사로 표현하며 세부 리소스에는 id를 붙임
  • 특징
    • 클라이언트/서버 구조 : 독립적으로 구현되어 의존성 축소
    • 무 상태성 : 상태정보 따로 저장, 관리 X, 관리 단순
    • 일관된 인터페이스 : HTTP 표준에만 따르면 모든 플랫폼에 사용 가능
    • 캐시 처리 가능 : 캐싱 기능 적용 가능
    • 자체 표현 구조 : 메시지 자체만 보고도 이해할 수 있는 구조

📌 인터페이스 구현

✅ 데이터 통신을 사용하는 인터페이스 구현

  • 인터페이스 객체 생성 구현
    • DB정보를 SQL로 선택하여 JSON으로 생성

  • 객체 전송후 결과를 수신측에서 반환 받도록 구현
    • 송신 측에서 JSON으로 작성된 인터페이스 객체를 AJAX 기술을 이용하여 수신 측에 송신
    • 수신 측에서는 이를 파싱 후 처리
    • 수신 측의 처리 결괏값은 송신 측에 TRUE/FALSE 값 전달

✅ 인터페이스 개체를 사용하는 인터페이스 구현

  • 송신 시스템의 인터페이스 테이블
    • 송신 관련 정보 관리 / 송신 시스템에서 필요한 항목 구현
    • 인터페이스 이벤트 발생 시 인터페이스 테이블에 내용이 기록되도록 구현
    • 데이터 전송을 위해 DB커넥션이 수신측 인터페이스 테이블과 연계되도록 구현
    • 프로시저, 트리거, 배치 작업 등으로 데이터 전송

  • 수신 시스템의 인터페이스 테이블
    • 수신 관련 정보 관리 / 수신 시스템에서 필요한 항목 구현
    • 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션 진행
    • 오류 발생시 오류 코드와 내용 입력하도록 구현

📌 인터페이스 예외 처리 방안

✅ 데이터 통신 인터페이스에서 예외 처리

  • 방법

    • 송신측 : AJAX 호출 후 반환값을 받아 어떻게 처리할 지 호출하는 부분에서 정의
    • 수신측 : try ~ catch 구문을 이용하여 예외처리
  • 사례

    • 송신측
      - (시스템 환경) 네트워크 불안정 → 404 오류시 네트워크, 서버 상태 확인
      - (프로그램 자체 원인) 송신 데이터 생성 시 프로세스의 논리적 결함 → 예상되는 예외를 알람을 통해 사용자에게 전달
    • 수신측
      - (시스템 환경) 네트워크 및 서버 불안정 → 입력 대기 큐에 요청 쌓아놓고 차례로 서버 정상 가동시 처리
      - (수신 데이터) 데이터 정합성 체크 → 파싱 시 특수문자는 오류 나지 않은 문자로 대치 후 재처리
      - (프로그램 자체 원인) 수신 인터페이스 데이터 처리시 프로그램의 논리적 결함 → 예상되는 예외 알람을 통해 사용자에게 전달

✅ 인터페이스 객체 인터페이스에서 예외 처리

  • 방법
    • 송신측
      - 예외 발생 시 인터페이스 테이블에 예외 코드와 원인 입력
    • 수신측
      - 데이터가 없거나 잘못된 값을 읽을 경우 예외 발생
      - 예외 코드와 발생 사유 함께 기록
  • 사례
    • 송신측
      - (데이터 생성) 선택 SQL, 프로그램 오류, 데이터 객체 생성 오류 → 오류발생시 알람, 프로그램 개선
      - (테이블 입력) 입력 SQL 오류, 데이터 정합성 오류 → 실패 결과, 원인 기록
      - (데이터 전송) DB 연계 오류 → 통신 결과 읽어서 결과, 원인 인터페이스 테이블에 기록
    • 수신측
      - (데이터 읽기) 데이터 선택 시 오류 → 사용자에게 예외 발생 알람 전송, 테이블에 기록
      - (데이터 트랜잭션) 데이터 트랜잭션 시 프로그램 논리상 오류 → 사용자에게 예외 발생 알람 전송, 테이블에 기록
      - (처리 결과 응답) DB 연계 오류 → 테이블에 기록

📌 인터페이스 보안 취약점

: 스니핑을 통한 데이터 탈취 위협 & 삽입, 삭제, 변조 공격을 통한 시스템 위협

📌 인터페이스 보안 구현 방안

✅ 시큐어 코딩 가이드 적용 (입보시 에코캡아)

  • 입력데이터 검증 및 표현
  • 보안 기능
  • 시간 및 상태
  • 에러 처리
  • 코드 오류
  • 캡슐화
  • API 오용

✅ DB 보안 적용

  • 암호화 알고리즘
    • 대칭 키 알고리즘 : 암복호화에 같은 암호키 사용
    • 비대칭 키 알고리즘 : 공개키 + 비밀키
    • 해시 암호화 알고리즘 : 해시값 사용, 일방향성 특성
  • 암호화 기법
    • API : 애플리케이션 레벨에서 암호 모듈 적용
    • Plug-in : DB 서버에 암복호화 모듈 설치
    • TDE : DB서버의 DBMS 커널이 자체적으로 암복호화 기능 수행(내장)
    • Hybrid : API + Plug-in, 부하 분산
  • 중요 인터페이스 데이터 암호화 전송
    • 보안 채널
      - IPSec
      - SSL/TLS
      - S-HTTP

0개의 댓글