1. 인터페이스 기능 구현
중분류 | 소분류 | 키워드 |
인터페이스 기능 구현 기술 | JSON | - 속성-값 - AJAX에서 많이 사용 |
AJAX (Asynchronous JavaScript and XML) |
- 자바스크립트를 사용한 비동기적으로 데이터를 교환하는 웹기술 - XMLHttpRequest 객체를 사용 |
|
XML (eXtensible Markup Language) |
- HTML 단점 보완한 마크업 언어 - 전송되는 데이터 구조를 동일한 형태로 정의 |
|
REST | - 자원의 존재/상태 정보를 표준화된 HTTP 메소드로 주고 받는 아키텍처 - 메소드 : POST, GET, PUT, DELETE |
|
인터페이스 보안 기능 적용 | 시큐어 코딩 가이드 | - 입력 데이터 검증 및 표현 - 보안 기능 - 시간 및 상태 - 에러 처리 - 코드 오류 - 캡슐화 - API 오용 |
데이터 베이스 알고리즘 | - 대칭 키 암호화 알고리즘 - 비대칭 키 암호화 알고리즘 - 해시 암호화 알고리즘 |
|
데이터베이스 암호화 기법 | - API 방식 - Plug-In 방식 - TDE 방식 - Hybrid 방식 |
|
암호화 전송을 보완하는 기술 | - IPSec (IPSecurity) - SSL/TLS - S-HTTP (Secure Hypertext Transfer Protocol) |
1.1 인터페이스 기능 구현 기술
(1) JSON
🤔 JSON이란?
속성-값(Attribute-Value Pair)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷
① AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
② 언어 독립형 데이터 포멧으로 다양한 데이터 프로그래밍 언어에서 사용하고 있는 기술
JSON의 표현 자료형 | 설명 |
숫자 | - 기본 자료형의 수는 정수, 실수로 표현 |
문자열 | - 항상 큰 따옴표("")로 묶고, 그 안에 유니코드 문자들을 나열 |
배열 | - 대괄호[]로 표시 - 배열의 각 요소는 기본 자료형, 배열, 객체 중 하나이다 - 각 요소들은 쉼표(,)로 구별되고, 각 요소가 나타내는 순서에 의미가 존재 |
객체 | - 객체는 이름/값 쌍의 집합으로, 중괄호 사용 - 이름은 문자열이므로 따옴표를 사용, 값은 기본 자료형 - 각 쌍들은 (,)로 구별되고, 순서는 의미가 없음 |
(2) AJAX
🤔 AJAX(Asynchronous JavaScript and XML)란?
자바 스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
① 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 필요한 일부 페이지의 데이터만 로드하는 기법
② HTML만으로 어려운 다양한 작업을 웹페이지에서 구현하여 이용자가 자유롭게 상호작용 할 수 있도록 구현하는 기법
주요 기술 | 설명 |
XMLHttpRequest | - 비동기 통신을 담당하는 자바 스크립트 객체 |
JavaScript | - 객체 기반의 스크립트 프로그래밍 언어 - 웹 브라우저에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 보유 |
XML | - HTML 단점을 보완한 인터넷 언어로 SGML의 복잡한 단점을 개선한 마크업 언어 |
DOM (Document Object Model) |
- XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API - 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 개체 지향 모델 |
XSLT (eXtensible Stylesheet Language Transmations) |
- XML 문서를 다른 XML문서로 변환하는데 사용하는 XML 기반 언어 - W3C에서 제정한 표준으로 XML 변환 언어를 사용하여 XML 문서로 바꾸고, XPath를 사용하여 탐색한다 |
HTML | - 인터넷 웹(WWW) 문서를 표현하는 표준화된 마크업 언어 |
CSS (Cascading Style Sheets) |
- 마크업 언어가 실제 표시되는 방법을 기술하는 언어 - 운영체제나 사용 프로그램과 관계 없이 글자 크기, 글자체, 줄 간격, 색상 등을 자유롭게 선택할 수 있는 스타일 시트 |
(3) XML
🤔 XML(eXtensible Markup Language)란?
HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업언어
① 송,수신 시스템 간 데이터 연계의 편의성을 위해 전송되는 데이터 구조를 동일한 형태로 정의
② 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어이다
③ 사용자가 직접 문서의 태그를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다
(4) REST
🤔 REST(Representational State Transfer)란?
웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메소드로 주고 받는 웹 아키텍처
① REST의 형태 : 리소스(자원), 메소드(처리), 메시지
② REST의 메소드 : POST(Create), READ, PUT, DELETE
REST 특징 | 설명 |
클라이언트/서버 구조 | - 역할이 명확히 구분되기 때문에 클라이언트와 서버는 독립적으로 구현되어야 하고, 서로 간 의존성은 축소 |
무 상태성 | - 작업을 위한 상태 정보를 따로 저장하고 관리되지 않기 때문에 API 서버는 들어오는 요청만 단순히 처리 - 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순 |
일관된 인터페이스 | - HTTP 표준에만 따른다면 특정 언어나 기술에 종속되지 않고 모든 플랫폼에 사용할 수 있으며 URI로 지정한 리소스에 대한 조작이 가능한 아키텍처 스타일 |
캐시 처리 가능 | - HTTP가 가진 캐싱 기능 적용 가능 - HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현 가능 |
자체 표현 구조 | - API 메시지 자체만 보고도 API를 이해할 수 있는 구조를 가짐 - 리소스와 메소드를 이용해서 어떤 메소드에 무슨 행위를 하는지를 알 수 있으며, 또한 메시지 포맷 역시 JSON을 이용해서 직관적으로 이해가 가능한 구조 |
1.2 인터페이스 보안 기능 적용
(1) 시큐어 코딩 가이드
적용 대상 | 보안 약점 | 대응 방안 |
입력 데이터 검증 및 표현 |
프로그램 입력값에 대한 검증 누락/부적절한 검증, 잘못된 형식 지정 | 사용자/프로그램 입력에 대한 유효성 검증 체계를 수립하고 실패 시 처리 기능 설계 및 구현 |
보안 기능 | 보안(인증, 접근제어, 기밀성, 암호화, 권한 권리 등)의 부적절한 구현 | 인증, 접근 통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영되도록 설계 및 구현 |
시간 및 상태 | 거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리 | 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임 워크 사용, 블록문 내에서만 재귀 함수 호출 |
에러 처리 | 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보가 포함 | 에러 상황을 처리하지 않거나, 불충분한 처리되어 중요 정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현 |
코드 오류 | 개발자가 번할 수 있는 코딩 오류로 인한 유발 | 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거 |
캡슐화 | 가능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출 | 디버거 코드 제거와 필수 정보 외의 클래스 내 프라이빗 접근자 지정 |
API 오용 | 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API 사용 | 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용 |
(2) 데이터베이스 암호화 알고리즘
구분 | 설명 | 종류 |
대칭 키 암호화 알고리즘 | 암,복호화에 같은 암호 키를 사용하는 알고리즘 | ARIA 128/192/256, SEED |
비대칭 키 암호화 알고리즘 | 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 소유자만 알 수 있도록 하는 알고리즘 |
RSA, ECC, ECDSA |
해시 암호화 알고리즘 | 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘 | SHA-256/284/512, HAS-160 |
(3) 데이터베이스 암호화 기법
구분 | 설명 |
API 방식 | - 애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이션 수정 방식 - 애플리케이션 서버에 암,복호화, 정책 관리, 키 관리 등의 부하 발생 |
Plug-In 방식 | - 암, 복호화 모듈이 DB서버에 설치된 방식 - DB 서버에 암,복호화, 정책 관리, 키 관리 등의 부하 발생 |
TDE 방식 (Trasparent Data Encrytion) |
- DB 서버의 DBMS 커널이 자체적으로 암,복호화 기능을 수행하는 방식 - 내장되어 있는 암호화 기능을 이용 |
Hybrid 방식 | - API 방식과 Plug-in 방식을 결합하는 방식 - DB 서버와 애플리케이션 서버로 부하 분산 |
(4) 중요 인터페이스 데이터의 암호화 전송을 보안하는 기술
보안 기술 | 설명 |
IPSec (IP Security) |
- IP 계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 임호화(ESP)를 이용하여 양 종단 간(End Point)구간에 보안 서비스를 제공하는 터널링 프로토콜 - 동작 모드는 전송(Transport) 모드와 터널(Tunnel) 모드가 있다 - 주요 프로토콜 : AH, ESP, IKE(키교환) - IPSEC 정책 : SPD, SAD |
SSL/TLS | - 전송 계층(4계층)과 응용 계층(7계층) 사이에서 클라이언트와 서버 간 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜 - 인증 모드는 익명 모드, 서버 인증 모드, 클라이언트-서버인증모드가 있다 - Client와 Server 간에 상호 인증, 암호화 방식에 대해 협상을 거치는 특징이 있다 - 특정 암호 기술에 의존하지 않고 다양한 암호 기술 적용 - Https:// 표시 형식과 443 포트 이용 |
S-HTTP (Secure Hypertext Transfer Protocol) |
- 웹 상에서 네트워크 트래픽을 암호화 하는 주요 방법 중하나로 클라이언트와 서버 간 전송되는 메시지를 암호화 하여 전송 - 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능 - S-HTTP 서버 접속 시 shttp://URL 사용 |
2. 인터페이스 구현 검증
중분류 | 소분류 | 키워드 |
인터페이스 구현 검증 | 인터페이스 구현 검증 도구 | - xUnit - STAF - FitNesse - NTAF - Selenium - watir |
인터페이스 감시 도구 | - 스카우터(SCOUTER) - 제니퍼(Jennifer) |
|
인터페이스 오류 처리 | 오류 처리 방법 | - 화면에서 오류를 인지 - 오류 로그 생성 - 관련 테이블에 오류사항 기록 |
2.1 인터페이스 구현 검증
(1) 인터페이스 구현 검증 도구
🤔 인터페이스 구현 검증 도구란?
인터페이스 동작 상태를 검증하고 모니터링할 수 있는 도구
인터페이스 세부 기능을 기능 단위로 테스트하는 단위테스트와 전체 인터페이스 흐름을 확인할 수 있는 통합 테스트가 필요하다
도구 | 설명 |
xUnit | - 자바(JUnit), C++(cppUnit), Net(NUnit) 등 다양한 언어를 지원하는 단위테스트 프레임워크 - 소프트웨어의 함수나 클래스 같은 서로 다른 구성 원소(단위)를 테스트 할 수 있게 해주는 도구 |
STAF | - 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크 - 각 테스트 대산 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증도구 |
FitNesse | - 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크 - 사용자가 테스트 케이스 테이블을 작성하면 빠르고 편하게 자동으로 원하는 값에 대해 테스트를 할 수 있는 장점이 있다 |
NTAF | - FitNesse의 장점인 재사용 및 확장성을 통합한 NHN(naver)의 테스트 자동화 프레임워크 |
Selenium | - 다양한 브라우저 지원 및 개발 언어를 지원하는 웹 어플리케이션 테스트 프레임워크 - 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 도구를 제공 |
watir | - Ruby기반 웹 애플리케이션 테스트 프레임워크 - 모든 언어 기반의 웹 애플리케이션 테스트와 호환성 테스팅 기능 |
(2) 인터페이스 감시 도구
도구 | 설명 |
스카우터 (SCOUTER) |
- 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈소스 DB 모니터링 기능, 인터페이스 감시 기능을 제공 |
제니퍼 (Jennifer) |
- 애플리케이션의 개발부터 테스트, 오픈, 운영, 안정화까지 전 생애 주기 단계 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어 |
2.2 인터페이스 오류 처리
🔍 인터페이스 오류처리 방법
① 사용자 화면에서 오류를 인지하도록 구현
② 인터페이스 오류 로그 생성
③ 인터페이스 관련 테이블에 오류사항 기록
728x90