그냥 게임개발자

5. 인터페이스 구현 본문

나만의 정처기 공부

5. 인터페이스 구현

sudoju 2022. 3. 17. 03:55

Chapter02 인터페이스 기능 구현

■ 컴포넌트 명세서 : 컴포넌트 개요, 부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세서

인터페이스 명세서 : 컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서

상세 기능별 인터페이스 명세서 주요 항목(아명오개 전후파반)

  • 인터페이스ID : 인터페이스를 구분하기 위한 식별자
  • 인터페이스 : 해당 인터페이스를 나타내는 고유 명칭
  • 퍼레이션 명 : 해당 인터페이스의 세부 동작 명칭
  • 오퍼레이션 요 : 해당 인터페이스의 세부 동작 프로세스에 대한 세부 설명
  • 조건 : 해당 인터페이스의 세부 동작이 정상적으로 작동하기 위한 사전에 완료되어야 하는 조건 기술
  • 조건 : 해당 인터페이스의 세부 동작이 정상적으로 작동된 이후에 발생되는 조건 기술
  • 라미터 : 인터페이스 구성 항목 값
  • 환 값 : 인터페이스 전송 후 반환되는 값

송 수신 시스템 간 인터페이스 데이터 표준 확인 절차 순서

데이터 인터페이스 입 출력 의미 파악 -> 데이터 인터페이스 입 출력 의미 파악을 통한 데이터 표준 확인 -> 인터페이스 데이터 항목 식별 -> 데이터 표준 최종 확인

 

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

JSON 표현 자료형

  • 숫자(Number) = 74, 문자열(String) = "ABCD", 배열(Array) = [ ] , 객체(Object) = { }

XML(Extensible Markup Language) : HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어

AJAX(Aynchronous Javascript And XML) : 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하는 웹 기술

AJAX 주요기술

  • XMLHttpRequest : 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API
  • JavaScript : 객체 기반의 스크립트 프로그래밍 언어
  • XML : HTML의 단점을 보완한 인터넷 언어, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
  • DOM : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API
  • XSLT : XML 문서를 다른 XML 문서로 변환하는 데 사용하는 XML 기반 언어
  • HTML : 인터넷 웹 문서를 표현하는 표준화된 마크업 언어
  • CSS : 마크업 언어가 실제 표시되는 방법을 기술하는 언어

 

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

  • REST 메서드 : HTTP메서드 중 CRUD메서드만 사용 POST(생성), GET(조회), PUT(수정), DELETE(삭제)

 

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

  • 입력 데이터 검증 및 표현
  • 보안 기능
  • 시간 및 상태
  • 에러 처리
  • 코드 오류
  • 캡슐화
  • API 오용
적용 대상 보안 약점 대응 방안
입력 데이터 검증 및 표현 프로그램 입력값에 대한 검증 누락 사용자 프로그램 입력 데이터에 대한 유효성 검증 체계 수립하고 실패 시 처리기능 설계 및 구현
보안 기능 보안기능의 부적절한 구현 보안기능이 적절하게 반영되도록 설계 및 구현
시간 및 상태 거의 동시에 수행 지원하는 병렬 시스템에서 시간 및 상태의 부적절한 관리 공유 자원의 접근 직렬화, 병렬 실행 가능, 프레임 워크 사용, 블록문 내에서만 재귀함수 호출
에러 처리 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보가 포함 에러 상황을 처리하지 않거나 불충분하게 처리되어 중요 정보 유출 등 보안 약점 발생하지 않도록 시스템 설계 및 구현
코드 오류 개발자가 범할 수 있는 코딩 오류로 인해 유발 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거
캡슐화 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출 디버거 코드 제거와 필수정보 외의 클래스 내 Private 접근자 지정
API 오용 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API 사용 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용

 

데이터베이스 암호화 알고리즘(대비해)

  • 대칭키 암호화 알고리즘 : 암,복호화에 같은 암호키를 쓰는 알고리즘
  • 비대칭 키 암호화 알고리즘 : 공개키는 누구나 알 수 있지만, 비밀키는 키 소유자만 알 수 있게 사용하는 알고리즘
  • 해시 암호화 알고리즘 : 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘

데이터베이스 암호화 기법(애플티하)

  • API 방식 : 애플리케이션 레벨에서 암호 모듈을 적용하는 애플리케이션 수정 방식
  • Plug-in 방식 : 암 복호화 모듈이 DB서버에 설치된 방식
  • TDE 방식 : DB서버에 DBMS 커널이 자체적으로 암 복호화 기능을 수행하는 방식
  • Hybrid 방식 : API 방식과 Plug-In 방식을 결합하는 방식

중요 인터페이스 데이터의 암호화 전송을 보안  기술

  • IPSec(IP Security) : IP계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간(End Point) 구간에 보안 서비스를 제공하는 터널링 프로토콜
  • SSL/TLS : 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
  • S-HTTP(Secure Hypertext Transfer Protocol) : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법, 클라이언트와 서버 간에 전송되는 모든 메세지를 암호화하여 전송

 

Chapter03 인터페이스 구현 검증

 

■ 인터페이스 구현 검증 도구 (엑스피 엔셀웨)

  • xUnit : 자바, C++, .Net 등 다양한 언어를 지원하는 단위테이스 프레임워크
  • STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
  • FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF : FitNesse(협업기능) + STAF(재사용, 확장성) 통합한 테스트 자동화 프레임워크
  • Selenium : 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
  • watir : 루비(Ruby)기반 웹 애플리케이션 테스트 프레임워크

인터페이스 감시 도구

  • 스카우터(SCOUTER) : 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능을 제공
  • 제니퍼(Jennifer) : 애플리케이션의 개발부터 테스트, 오픈, 운영 안정화까지 전 생애주기 단계 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어

 

인터페이스 오류 처리 방법 (화로테)

  • 사용자 화면에서 오류를 인지하도록 구현
    • 주로 실시간으로 데이터가 인터페이스 되는 경우 사용
  • 인터페이스 오류 로그 생성
    • 인터페이스 오류의 자세한 내역을 알기 위해 사용
  • 인터페이스 관련 테이블에 오류 사항 기록
    • 인터페이스 트랜잭션 기록을 별도로 보관하는 경우에는 테이블에 오류사항을 기록

 


잠깐 알고가기!

 

● FTP(File Transfer Protocol)

- TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일을 전송하기 위한 프로토콜

 

DB 링크(DB Link)

- 수신 시스템에서 DB링크를 생성하고 송신 시스템에서 해당 DB링크를 직접 참조하는 연결 방식

 

소켓(Socket)

- 서버는 통신을 위한 소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청 시 클라이언트와 연결하고 통신하는 방식

 

컴포넌트(Component)

- 특정한 기능을 수행하기 위해 독립적으로 개발되어 보급되는 잘 정의된 인터페이스를 가지며 다른 부품과 조립되어 응용시스템을 구축하기 위해 사용되는 소프트웨어 프로그램

 

프로시저(Procedure)

- SQL를 이용해 생성된 데이터를 조작하는 프로그램, 데이터 베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행

 

트리거(Trigger)

- 특정 테이블에 삽입, 수정, 삭제 등의 변경 이벤트 발생 시 DBMS에서 자동 실행 되도록 구현된 프로그램

 

배치 작업(Batch Job)

- 실시간 작업의 반대 개념으로 일련의 작업을 하나의 작업 단위로 묶어서 일괄처리하는 작업

 

404 오류

- 웹에서 서버를 찾지 못할 때 발생하는 오류 메시지

 

 스니핑

- 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격기법

 

AH(Authentication Header)

- 메시지 Checksum을 활용한 데이터 인증과 비연결형 무결성을 보장해주는 프로토콜

 

IKE(Internet Key Exchange)

- 키 교환 알고리즘

 

ESP(Encapuslating Security Payload)

- 암호화 알고리즘을 활용한 캡슐화 기반 페이로드 기밀성을 제공하는 프로토콜

 

민감 데이터(Senstive Data)

- 일반적으로 개인을 식별할 수 있는 정보

 


※ 틀린거

개체(Entity) 정의서 : 데이터베이스 개념 모델링 단계에서 도출한 개체의 타입과 관련 속성, 식별자 등의 정보를 개괄적으로 명세화한 정의서

 

테이블 정의서 : 논리 및 물리 모델링 과정에서 작성하는 설계 산출물, 테이블 구성하는 컬럼들의 특성을 문서화한 것

 

오브젝트 : 저장공간에서 할당되어 값을 가지거나 식별자에 의해 참조되는 공간

 

웹 서비스 : 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술

 

포인트 투 포인트 : 가장 기초적인 애플리케이션 통합 방법으로 1 : 1 단순 통합 방법

허브 앤 스포크 : 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식

메시지 버스 : 애플리케이션 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식

하이브리드 : 그룹 내는 허브앤 스포크 방식, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식

 

ESB : 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 연계에서 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 기술

 

DECLARE : 트리거에서 변수를 선언하는 선언부

BEGIN : 트리거의 시작점을 알리는 구문

 

연계 시스템 : 송 수신 시스템으로 구성할 수 있으며, 연계 방식에 따라 중계 서버를 둘  수 있다.

 

API 

  • 송신 시스템의 DB에서 데이터를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스
  • 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

JDBC : 데이터베이스에서 자료를 조회하거나 업데이트 하기 위해서 자바에서 데이터베이스 접속할 수 있도록 하는 자바 API

연계 테스트 : 송 수신 시스템을 연계하였을 경우 데이터의 정합성과 데이터 전송, 여부에 대한 테스트

로그 테이블 : 송 수신 시스템에서 처리되는 일련의 과정에 대한 결과를 기록한 것

 

테스트 케이스 : 명세 기반 테스트의 설계 산출물, 설계된 입력값, 실행조건, 기대 결과로 구성된 테스트 항목의 명세서

인터뷰 : 사용자 면담을 통해 연계 요구사항을 도출하는 기법

 

 

체크리스트 : 시스템 운영 환경, 성능, 보안 데이터 발생 주기 등의 기준에 대한 점검을 통한 분석 기법

브로커 : 시스템 상호간 데이터가 전송될 때, 데이터 포맷과 코드를 변환하는 솔루션

 

메시지 큐 : 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터를 송수신하는 기술

인터페이스 명세서 : 인터페이스 정의서에 작성한 인터페이스 ID별로 송수신하는 데이터 타입, 길이 등 인터페이스 항목을 상세하게 작성한 문서

 

AJAX : 브라우저가 가지고 있는 XMLhttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부분만을 위한 데이터를 로드하는 기법

 

인터페이스 절차

  • 인터페이스 데이터 전송 : 수신지 주소에 레스트 방식이나 DB 커넥션을 이용하여 전송
  • 인터페이스 데이터 수신 : 인터페이스 데이터를 수신한 후 데이터 형식에 맞는지 점감하고 이를 활용
  • 인터페이스 데이터 파싱 : 인터페이스 객체는 파서를 이용하여 변환하거나 인터페이스 테이블에서 선택
  • 인터페이스 데이터 검증 : 각 세부 데이터의 포맷과 논리적인 제약조건의 오류 검사
  • 후속 기능 수행 : 각 세부 데이터를 활용해서 수신 시스템에서 정의된 동작을 진행

 

인터페이스 개체(Entity)를 사용하여 인터페이스를 구현하는 방법

  • 인터페이스 이벤트 발생 시 인터페이스 테이블에 기록되도록 구현
  • 데이터 전송을 위해서 DB커넥션이 수신 측 인터페이스 테이블과 연계되도록 구현
  • 프로시저, 트리거, 배치작업 등의 방법을 통해서 수신 테이블로 데이터 전송

 

XMLHttpRequest : 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API

DOM : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API

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

 

 

시큐어 코딩 가이드

  1. 입력 데이터 검증 및 표현
    • 입력 누락
    • 유효성 검증 체계 수립
  2. 보안 기능 -
    • 보안 부적절
    • 보안 적절하게 구현
  3. 시간 및 상태 -
    • 시간 상태 부적절
    • 직렬화, 병렬 실행 가능, 프레임 워크 사용 , 블록문 내에서 재귀함수 호출
  4. 에러 처리 -
    • 에러 미처리
    • 에러로 인해 중요 정보 노출되지 않도록 구현
  5. 코드 오류 -
    • 개발자 코딩 오류
    • 코딩 규칙 도출 후 경고 메시지 코드 제거
  6. 캡슐화 -
    • 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자 데이터 누출
    • 필수정보 외의 클래스 내 private 접근자 지정
  7. API 오용 -
    • 보안에 취약한 API 사용
    • 개발 언어별 취약 API 확보, 취약 API 검출 프로그램 사용

 

애플티하

API 방식 : 애플리케이션 레벨에서 암호 모듈을 적용

Plug-In 방식 : 암 복호화 모듈이 DB서버에 설치

TDE 방식 : DBMS 커널이 자체적으로 암복화기능을 수행

Hybrid 방식 : API 방식과 Plug-In 방식을 결합

 

 

표준화 : 인터페이스 시스템 사이에서 교환되는 데이터는 규격화된 표준 형식을 정의하여 사용하는 규칙

로그 테이블 : 송신 시스템과 수신 시스템에서 처리되는 일련의 과정에 대한 결과를 기록 및 관리

 

스카우터 : 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능을 제공

 

인터페이스 오류 처리 방법

- 사용자 화면에서 오류를 인지하도록 구현

- 인터페이스 오류 로그 생성

- 인터페이스 관련 테이블에 오류사항 기록

 

사용자 화면에서 오류를 인지하도록 구현 : 알람 형태로 화면에 표시, 실시간으로 데이터가 인터페이스 되는 경우에 사용되는 방법

 

Selenium : 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크

 

인명오개 전후파반

인터페이스 ID - 인터페이스를 구분하기위한 식별자

인터페이스 명 - 해당 인터페이스를 나타내는 고유 명칭

오퍼레이션 명 - 해당 인터페이스의 세부 동작 명칭

오퍼레이션 개요 - 프로세스에 대한 세부 설명

사전 조건 - 정상적으로 작동하기 위해 사전에 완료되어야 하는 조건 기술

사후 조건 - 정상적으로 작동한 후 발생되는 조건 기술

파라미터 - 구성 항목 값

반환 값 - 전송 후 반환되는 값

 

개체를 사용하는 인터페이스 구현 방법 : JSON 생성, AJAX 기술을 이용하여 수신측에 송신, 제이슨 인터페이스 객체를 수신받고 이를 파싱 후 처리

 

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

 

XML : HTML의 단점을 보완하고 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어

 

AJAX 주요기술

  • XMLHttpRequest : 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API
  • JavaScript : 객체 기반의 스크립트 프로그래밍 언어
  • XML : HTML의 단점을 보완하고 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
  • DOM : XML 문서를 트리구조의 형태로 접근할 수 있게 해주는 API
  • XSLT : XML문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반 언어
  • HTML : 인터넷 웹 문서를 표현하는 표준화된 마크업 언어
  • CSS : 마크업 언어가 실제 표시되는 방법을 기술하는 언어

REST는 크게 리소스(자원), 메서드(처리), 메시지의 3가지 요소로 구성된다.

 

인터페이스 데이터의 암호화 전송을 위한 기술

API : 애플리케이션 레벨에서 암호 모듈을 적용하는 애플리케이션 수정 방식

Plug-In 방식 : 암 복호화 모듈이 DB서버에 설치된 방식

TDE : DB 서버의 DBMS 커널이 자체적으로 암복호화 기능을 수행하는 방식

Hybrid 방식 : API 방식과 Plug-In 방식을 결합하는 방식

 

IPSec - IP(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간 구간에 보안 서비스를 제공하는 터널링 프로토콜

 

SSL/TLS - 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜

 

S-HTTP : 웹상에서 네트워크 트래픽을 암호화는 주요 방법 중 하나, 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송

 

스니핑 : 공격대상에게 직접적으로 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격기법

 

대칭 키 암호화 알고리즘 : ARIA 128/192/256, SEED

비대칭 키 암호화 알고리즘 : RSA, ECC 등

Hash 암호화 알고리즘 : SHA-256/384/512, HAS-160 등

 

'나만의 정처기 공부' 카테고리의 다른 글

7장 SQL 응용  (0) 2022.04.17
6장 (오답노트만)  (0) 2022.04.10
4. 통합구현  (0) 2022.03.15
3. 데이터 입출력 구현  (0) 2022.03.12
2. 화면설계(2)  (0) 2022.03.11