[정보처리기사 실기] 5장 인터페이스 구현 - 인터페이스 기능 구현

2022. 4. 20. 19:38정보처리기사/실기

728x90
반응형

인터페이스 기능 구현 정의

인터페이스 기능 구현 정의

- 소프트웨어와 연계 대상 모듈 간 세부 설계서를 일관되고 정형화된 인터페이스 기능 구현

 

모듈 간 세부 설계서 확인

- 컴포넌트 명세서와 인터페이스 명세서 등 세부 설계서 확인하여 인터페이스에 필요한 기능 확인

  • 컴포넌트 명세서 : 개요, 내부 클래스 동작, 인터페이스 통해 외부와 통신하는 명세 정의
  • 인터페이스 명세서 : 컴포넌트 명세서에 명시된 클래스의 세부적인 조건 및 기능 명시한 명세, 명칭, 사전사후 조건, 인터페이스 데이터 및 완료 후 성공 여부를 반환받는 반환 값

일관되고 정형화된 인터페이스 기능 정의

- 분석된 기능, 데이터 표준, 모듈 설계 명세서 통해 일관되고 정형화된 인터페이스의 기능 정의

  • 송신 측에서 필요 대상을 선택해 수신측에 데이터 전송
  • 필요 항목에 대해 데이터 전달
  • 전달 후 수신 측으로 부터 전달 여부에 대한 값 반환

정의된 인터페이스 기능에 대한 정형화

- 표준화하고, 보기 쉽게 정형화, 특정 HW, SW에 의존하지 않게 작성, 가독성 높이기 위해 프로세스 형태나 유스케이스 다이어그램 형태로 작성

인터페이스 기능 구현

사전에 정의된 기능에 대한 구체적 분석

  • 송신 측에서 필요 대상을 선택해 수신측에 데이터 전송
  • 필요 항목에 대해 데이터 전달
  • 전달 후 수신 측으로 부터 전달 여부에 대한 값 반환

인터페이스 기능 구현 기술

  • JSON : 속성값 쌍 또는 키값 쌍으로 이ㅜ러진 데이터 오브젝트를 전달하기위해 텍스트를 사용해 개방형 표준 포맷
    • 특징 : AJAX에 사용되는 XML을 대체하는 주요 데이터 포맷, 언어 독립형 데이터 포맷, 읽고 쓰기, 기계가 분석 생성 용이
    • number, String, Array, Object
    • 문법 : 구조 -> { "이름": "홍길동" }
    • 도구 : Parser, Renderer, Serializer, Mapper, Validator
    • 장점 : XML보다 가볍고 빠름, 자료 종류에 제한 없다, 자료형이 다양함, 자바스크립트 안에서 JSON 객체에 접근 쉬움
    • 단점 : 태그가 없어 가독성 떨어짐, DTD 같은 것이 없기에 형식이 틀렸을 경우 체크가 쉽지 않다.
  • XML : HTML 단점 보안, SGML의 복잡한 단점 개성
    • 특징 : 송수신 데이터 연계의 편의성 위해 동일한 형태 정의, 마크업 포맷의 메타 언어, 문서 태그 정의 및 사용
    • 구조 : 트리 구조, 상위 태그는 여러개의 하위 태그 가지기 가능, 종료 태그 필수, 시작과 종료는 일치, 순서는 지키고 띄어쓰기 인식, 속성값은 ""로 묶고, 대소문자 구분
    • 구성 : 프롤로그와 요소로 구성
      • 프롤로그 : <xml> 태그 사용, 소문자로만, version, encoding, standalone
      • 요소 : 시작 태그부터 종료 태그까지의 모든 것 -> <요소이름 속성 = " 속성값 ">내용</요소이름>
  • AJAX : 자바스크립트 사용 웹 서버와 클라 비동기적으로 XML 데이터 교환하고 조작하기 위한 웹 기술, XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만 로드, HTML만으로 어려운 작업 웹에서 구현, 상호 작용 할 수 있도록 구현
    • 주요 기술
      • XMLHttpRequest : 메소드가 데이터 전송 폼, 비동기 통신 자바스크립트 객체
      • JavaScript : 스크립트 프로그래밍 언어, 내장 객체에도 접근 기능 소유
      • XML : HTML 단점 보완 SGML 복잡한 단점 개선
      • DOM : XML 트리 구조 형태로 접근하게 하는 API, 플랫폼/언어 중립적 구조화된 문서 객체 지향 모델
      • XSLT : XML 다른 XML로 변환하는 XML 기반 언어, W3C 표준 XPath를 사용
      • HTML
      • CSS : 스타일 시트
    • 동작 원리
      • 이벤트 발생 -> 이벤트 핸들어에 의해 자바스크립트 호출 -> XMLHttpRequest객체 가지고 AJAX 요청 -> 처리 결과를 HTML, XML, JSON 형태로 웹 브라우저에 전달 -> 전달 데이터로 웹 일부만 갱신해 호출 -> 결과적으로 웹 일부만 다시 로딩
  • REST : 웹과 같은 분산 하이퍼미디어 환경에서 표준화된 HTTP 메소드 주고 받는 웹 아키텍처
    • 요소 : 리소스, 메서드, 메시지
    • 행위에 대한 메소드 : CRUD -> Post(create), Get(Read), Put(update), Delete(delete)
    • 리소스 : 모든 것을 리소스, 즉 명사로 표현, 세부 리소스에 id 적용
    • 특징
      • 클라이언트 서버 구조 : 클라이언트와 서버는 독립적 구현, 서로 간 의존성 축소
      • 무 상태성 : 저장하고 관리하지 않기 때문에 API 서버는 요청만 단순 처리, 불필요한 정보 관리 안함
      • 일관된 인터페이스 : 모든 플랫폼에서 사용 가능, URI로 지정한 리소스에 조작이 가능한 아키텍처 스타일
      • 캐시 처리 가능 : HTTP 가진 캐싱 기능 적용, Last-Modified, E-Tag 사용
      • 자체 표현 구조 : API 메시지 자체만 보고 이해 가능한 구조

인터페이스 구현

- 데이터 통신 사용하는 법과 인터페이스 개체를 사용해 구현

 

(1) 데이터 통신 사용한 인터페이스 구현

  • 인터페이스 객체 생성 구현 : 디비에 있는 정보 SQL을 통해 선택해 JSON으로 생성
  • 객체 전송 후 전송 결과를 수신 측에서 반환 받도록 구현 : AJAX 기술 이용해 수신 측에 송신, 수신에서는 제이슨 객체 수신 받고 이를 파싱 후 처리, 수신 측의 처리 결괏값은 송신 측에 True/False 값 전달해 인터페이스 성공 여부 확인 전달

(2) 인터페이스 개체를 사용하는 인터페이스 구현

  • 송신 시스템의 인터페이스 테이블 : 송신 관련 정보 관리 위한 항목과 송신 시스템에 필요한 항목 구현, 이벤트 발생 시 테이블에 내용이 기록되도록 구현, 전송 위한 디비 커넥션이 수신 측 테이블과 연계, 프로시저 트리거 배치 작업 통해 데이터 전송
  • 수신 시스템의 인터페이스 테이블 : 수신 관련 관리 정보와 수신 시스템 필요 항목 구현, 데이터 읽은 후 정의된 데이터 트랜잭션 진행, 오류가 발생하면 오류 코드 칼럼에 정의된 오류와 내용 입력

인터페이스 예외 처리 방안

데이터 통신 사용한 인터페이스에서 예외 처리 방법

  • 송신 측에서 예외 처리 방법 : AJAX 호출 후 반환 값을 받아 처리할지 호출하는 부분에서 사전 정의, 성공과 실패로 나뉘며 예외 처리는 실패 시 발생
  • 수신 측에서 예외 처리 방법 : JSON 처리 시 try ~ catch 구문 이용해 예외 처리 후 송신 측에 전달, 별도 결과 설정 안해도 에러 발생 시 에러 결과 반환

인터페이스 개체 사용하는 인터페이스에서 예외 처리 방법

- 인터페이스 이력에 함께 기록한다.

  • 송신 인터페이스 테이블에서 예외 처리 방법 : 예외 발생 시 테이블에 유형에 따른 예외 코드와 상세한 원인 함께 입력, 테이블에 프로시저, 트리거 등 데이터 전송 시 발생하는 예외 유형 정의, 예외 원인 함께 입력
  • 수신 인터페이스 테이블에서 예외 처리 방법 : 데이터 없거나 잘못된 값 읽을 경우 예외 발생, 정의된 코드를 입력하고 사유 함께 기록, 예외 발생시, 수신 인터페이스 테이블에 별도 예외 사항 기록

인터페이스 보안 기능 적용

인터페이스 보안 취약점

(1) 데이터 통신 시 데이터 탈취 위협 : 스니핑

(2) 데이터 통신 시 데이터 위 변조 위렵 : 삽삭변 공격 통해 위협 존재

 

인터페이스 보안 구현 방안 

(1) 시큐어 코딩 가이드 적용

- 보안 취약점 방지를 위해 시큐어 코딩 가이드 작성

 

시큐어 코딩 가이드

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

(2) 데이터베이스 보안 적용

- 기밀성 유지 하고 보안 요구사항 적용, 암호화 알고리즘 통해 민감 정보 암호

 

(2) - 1 암호화 알고리즘

  • 대칭 키 암호화 알고리즘 : 암복호화 같은 암호 키 사용 : ARIA 128/192/256, SEED
  • 비대칭 키 암호화 알고리즘 : 공개키는 누구나 알지만, 대응 하는 비밀키는 소유자만 안다 : RSA, ECC, ECDSA
  • 해시 암호화 알고리즘 : 해시값으로 원래 입력값 찾아낼 수 없는 일방향성 특성 : SHA-256/384/512. HAS-160

 

(2) - 2 데이터베이스 암호화 기법

  • API 방식 : 앱 레벨에서 API 적용하는 애플리케이션 수정 방식, 서버에 암복호화, 정책 관리, 키 관리 부하 발생
  • Plug-in 방식 : 암복호화 모듈이 디비 서버에 설치된 방식, 디비 서버에 암복호화 정책 관리 키 관리 부하 발생
  • TDE 방식 : 디비 서버 DBMS 커널이 자체적으로 암복호화 기능 수행, 내장되어있는 암호화 기능 사용
  • Hybrid 방식 : API + Plug-in, 디비 서버와 애플리케이션 서버로 부하 분산

 

(3) 중요 인터페이스 데이터 암호화 전송

- 채널 통해 전송 시에는 암복호화 과정 거쳐야 하고, 보안 채널 활용해 전송

 

보안 기술

  • IPSec : IP 계층에서 무결성과 인증 보장하는 인증 헤더와 기밀성 보장하는 암호화 이용해 양 종단 간 구간에 보안 서비스 저공 프로토콜, 전송 모드와 터널 모드 존재, 주 프로토콜 AH, ESP, IKE있고, 정책에는 SPD, SAD 존재
  • SSL/TLS : 전송계층과 응용계층 사이에 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송시 데이터 무결성 보장, 익명 서버인증 클라이언튼-서버인증 모드가 존재, 위 와 달리 클라와 서버 간 상호 인증, 암호 방식에 대해 현상 거치는 특징, 다양한 암호 기술 적용, Https://와 443 포트 이용
  • S-HTTP : 클라와 서버 간 전송되는 모든 메시지 각각 암호화 전송, 네트워크 트래픽 암호화, 메시지 보호는 HTTP 사용한 앱에서 가능, sHttp 사용

인터페이스 보안 기능 적용 프로세스

(1) 취약점 분석

- 부석위해 송수신 영역의 구현 기술 및 특정을 구체적으로 분석, 영역을 구분해 분석, 인터페이스 기능 대상 보안 취약점 분석, 시나리오 작성해 분석

 

(2) 보안 기능 적용

  • 네트워크 구간에 대한 보안 기능 적용 : 데이터 탈취 위변조를 막기 위해 네트워크 트래픽에 대한 암호화 적용하고 전송 구간 암호화 구현
  • 애플리케이션 보안 기능 적용 : - 시큐어 코딩 가이드 참조해 보안 기능 적용
  • 데이터베이스 보안 기능 적용 : 동작 객체 보안 취약점 제거 위해 보안 적용, 민감 데이터의 경우 자체 보안 방안 고려
728x90
반응형