그냥 게임개발자
5. 인터페이스 구현 본문
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 메서드로 주고받는 웹 아키텍처
시큐어 코딩 가이드
- 입력 데이터 검증 및 표현
- 입력 누락
- 유효성 검증 체계 수립
- 보안 기능 -
- 보안 부적절
- 보안 적절하게 구현
- 시간 및 상태 -
- 시간 상태 부적절
- 직렬화, 병렬 실행 가능, 프레임 워크 사용 , 블록문 내에서 재귀함수 호출
- 에러 처리 -
- 에러 미처리
- 에러로 인해 중요 정보 노출되지 않도록 구현
- 코드 오류 -
- 개발자 코딩 오류
- 코딩 규칙 도출 후 경고 메시지 코드 제거
- 캡슐화 -
- 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자 데이터 누출
- 필수정보 외의 클래스 내 private 접근자 지정
- 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 |