4. 인터페이스 구현
⑴ AJAX(Asynchronous JavaScript and XML)
① AJAX의 개념
- 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능
- 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의
일부만을 위한 데이터를 로드하는 기법
② 비동기 방식
- 웹페이지를 리로드하지 않고 데이터를 불러오는 방식
- 페이지 리로드시 전체 리소스를 다시 불러와야 하지만, 비동기 방식을 이용할 경우 필요한 부분만을 불러와
사용하므로 불필요한 리소스가 발생하지 않는다.
③ AJAX의 장/단점
■ 장점
- 웹페이지의 속도향상
- 서버의 처리가 완료될 때까지 기다리지 않고 처리가 가능하다.
- 서버에서 Data만 전송하면 되므로 전체적인 코딩의 양이 줄어든다.
- 기존 웹에서는 불가능했던 다양한 UI를 가능하게 해준다.
■ 단점
- 히스토리 관리가 되지 않는다.
- 사용자에게 아무런 진행 정보가 주어지지 않는다.
- AJAX를 쓸 수 없는 브라우저에 대한 문제 이슈가 있다.
- 다른 도메인과는 통신이 불가능하다.
- 페이지 이동없는 통신으로 인한 보안상의 문제가 있다.
④ AJAX 예제
$.ajax({
url: ‘https://www.njobler.net/test’,
type: 'GET',
success: function onData (data) {
console.log(data);
},
error: function onError (error) {
console.error(error);
}
});
⑵ SOAP(Simple Object Access Protocol)
① SOAP의 개념
- HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
- SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다.
- 보통 RPC(Remote Procedure Call) 패턴을 많이 사용한다.
- 클라이언트에서 서버 쪽으로 메시지를 요청하고, 서버는 그 메시지에 반응한다.
- 레스트풀(RESTful)보다 상대적으로 개발이 어렵다.
- DCOM이나 CORBA의 호환성과 보안 문제로 등장했다.
- SOA 개념을 실현하기 위한 기술이다.
② SOAP 구성
■ SOAP(Simple Object Access Protocol)
- HTTP, HTTPS, SMTP등을 사용하여 XML 기반의 메시지를 네트워크 상에서 교환하는 형태의 프로토콜
- XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다.
■ UDDI(Universal Description, Discovery and Integration)
- 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 목록을 등록하기 위한, XML기반의 규격
■ WSDL(Web Services Description Language)
- 웹 서비스 기술언어 또는 기술된 정의 파일의 총칭으로 XML로 기술
- 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등이 기술된다.
③ SOAP 보안 프로토콜
■ SAML(인증/권한관리)
- 이기종 시스템 간 권한 확인
- 인증 및 권한 정보 명세
- 보안 토큰
■ XKMS(키관리)
- 부인방지
- 기존 PKI 연동 용이
■ XACML(접근제어)
- 정보 접근을 위한 XML 명세
- UDDI 및 WSDL 항목 접근 제어
④ SOAP 장/단점
■ 장점
- 기본적으로 HTTP 기반 위에서 동작하기 때문에, 프록시와 방화벽에 구애받지 않고 통신이 가능하다.
- HTTP 이외의 다른 트랜스포트 프로토콜들(SMTP)을 사용할 수 있다.
- 플랫폼 및 프로그래밍 언어에 독립적이다.
■ 단점
- XML 포맷의 형태로 보내기 때문에 다른 기술과 비교해서 상대적으로 느리다.
⑤ SOAP 기본 구조
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
⑶ REST
① REST의 개념
- HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한
CRUD Operation을 적용하는 것을 의미한다.
- 자원 기반의 구조(ROA, Resource Oriented Architecture)의 개념으로 구현되었다.
② REST 구성요소
■ 자원(Resource), URI
- 서버에 존재하는 데이터의 총칭
- 모든 자원은 고유의 URI를 가지며 클라이언트는 이 URI를 지정하여 해당 자원에 대해 CRUD 명령을 수행한다.
■ 행위(Verb), Method
- 클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다.
- HTTP 프로토콜에서는 GET , POST , PUT , DELETE 같은 Method를 제공한다.
■ 표현(Representation)
- REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러 형태의 Representation으로 나타낼 수 있다.
③ CRUD Operation, HTTP Method
- Create : POST (자원 생성)
- Read : GET (자원의 정보 조회)
- Update : PUT (자원의 정보 업데이트)
- Delete : DELETE (자원 삭제)
④ REST 특징
■ 유니폼 인터페이스
- HTTP 표준만 따르면 어떤 언어나 플랫폼에서 사용해도 사용이 가능한 인터페이스 스타일
- 특정 언어에 상관없이 사용이 가능하다.
■ Stateless(상태 정보 유지 안함)
- Rest는 상태 정보를 유지하지 않는다.
- 서버는 각각의 요청을 완전히 다른 것으로 인식하고 처리를 한다.
■ Cacheable(캐시가능)
- HTTP가 가진 캐싱 기능이 적용 가능
■ Self-descriptiveness (자체 표현 구조)
- REST API 메시지만 보고도 쉽게 이해 할 수 있는 자체 표현 구조로 되어있다.
⑤ REST 장/단점
■ 장점
- 별도의 인프라 구축이 필요없다.
- 클라이언트와 서버의 분리
- 플랫폼에 독립적
- 쉬운 사용
■ 단점
- 표준이 존재하지 않음
- HTTP Method의 한계
- RDBMS와 맞지 않음
⑥ REST API 예제
구분
표현
HTTP POST,
http://njobler.net/lecture
{
"lec":{
강의 생성
"name":"정보처리실기"
"price":"70,000"
}
}
강의 조회
HTTP GET, http://njobler.net/lecture/정보처리실기
HTTP PUT, http://njobler.net/lecture
{
"lec":{
강의 수정
"name":"정보처리 실기"
"price":"65,000"
}
}
강의 삭제
HTTP DELETE, http://njobler.net/lecture/정보처리실기
⑦ RESTful
Ÿ REST의 원리를 따르는 시스템
5. 인터페이스 보안
⑴ 인터페이스 보안 취약점 분석
■ 인터페이스의 보안 취약점을 분석
- 인터페이스 각 구간의 구현 현황을 분석
- 인터페이스 각 구간의 보안 취약점을 분석
■ 분석된 보안 취약점을 근거로 인터페이스 보안 기능을 적용
- 네트워크 구간에 보안 기능을 적용
- 애플리케이션에 보안 기능을 적용
- 데이터베이스에 보안 기능을 적용
⑵ 인터페이스 보안 기능 적용
① 네트워크 영역
- 인터페이스 송/수신 간 스니핑 등 이용한 데이터 탈취 및 변조 위협 방지 위해 네트워크 트래픽에 대한
암호화 설정
- IPSec, SSL, S-HTTP 등 다양한 방식으로 적용
② 애플리케이션 영역
- 시큐어코딩 가이드를 참조하여 애플리케이션 코드 상 보안 취약점을 보완하는 방향으로 보안 기능 적용
③ DB 영역
- DB, 스키마, 엔티티의 접근 권한과 프로시저, 트리거 등 DB 동작 객체의 보안 취약점에 보안 기능을 적용
- 민감 데이터를 암호화, 익명화 등을 통해 데이터 자체 보안 방안도 고려
'information processing' 카테고리의 다른 글
1-21,22. 객체지향 설계 (0) | 2022.06.27 |
---|---|
1-20. 인터페이스 구현 검증 (0) | 2022.06.27 |
1-18. 인터페이스 기능 구현(1) (0) | 2022.06.27 |
1-17. 인터페이스 개요 및 설계서 확인 (0) | 2022.06.26 |
1-16. 배치 프로그램 구현 (0) | 2022.06.26 |