4. 프로그래밍 언어 활용

 4.1 서버프로그램 구현

  4.1.4 서버 프로그램 구현

  4.1.5 배치 프로그램 구현


1. 보안 취약성 식별

 

1.1 정의 및 개념

취약점은 공격자가 시스템의 정보 보증을 낮추는데 사용되는 약점이다.

시스템 민감성 또는 결함, 공격자가 결함에 대한 접근 그리고 공격자가 결함에 대한 익스플로잇 가능성

취약점을 익스프로잇하기 위해서, 공격자는 반드시 시스템의 약점에 접속할 수 있는 적어도 하나의 툴이나 기법을 가져야 한다.

이 경우에, 취약점은 또한 공격 영역이라고도 불린다.

 

1.2 취약점 식별과 제거

컴퓨터 시스템에서 취약점들을 발견할 수 있게 도와주는 많은 소프트웨어 툴들이 존재한다.

비록 이러한 툴들이 감시관에게 현재 존재할 수 있는 취약점들에 대한 좋은 개요를 제공할 수 있지만, 인간의 판단을 대체하지는 못한다.

단지 스캐너에게만 의존하는 것은 현재 시스템에 존재하는 문제들에 대한 제한된 관점과 긍정 오류를 만들 수 있다.

취약점들은 모든 주요 운영 체제들에서 발견되고 있다.

이러한 시스템들을 사용하면서 취약점들의 확률을 줄일 수 있는 유일한 방법은 감사와 최적의 배치, 세심한 시스템 관리를 포함한 꾸준한 조심을 통해서 가능해 진다.

 

1.3 취약점 사례

 

1. 시스템의 물리적 환경 취약점

직원, 관리, 조직 내에서 관리 절차와 보완 방식, 경영 활동과 서비스 전달, 하드웨어, 소프트웨어, 통신 장비와 시설, 그리고 이들의 조합

 

1,4 취약점 익스플로잇의 절차

공격자는 오버플로우 취약점을 찾아서 민감한 데이터를 내보내는 악성코드를 설치한다.

공격자는 사용자가 악성코드가 들어있는 이메일 메시지를 열게 만든다.

내부인이 보호되고 암호화된 프로그램을 USB에 담아와서 집에서 크랙한다.

1층에 설치된 컴퓨터 시스템에 수해로 인한 피해가 발생한다.

 

1.5 취약점 결과

보안 위반의 영향은 매우 크다. IT 관리자나 높은 관리직이 취약점이 있는 IT 시스템과 애플리케이션에 대해 쉽게 알 수 있는 것과 IT 위험에 대해 어떤 조치도 취하지 않는 것은 대부분의 경우에 좋지 않은 행위이다.

프라이버시 법은 관리자들이 보안 위험에 대한 영향과 가능성을 줄이는 것을 강요한다.

모의 해킹은 조직에 의해 채택된 약점과 대응책을 확인하는 형태이다.

 

1.6 소프트웨어 개발 보안

소프트웨어 개발 보안의 개념은 SW 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 SW에 내포될 수 있는 보안취약점의 원인, 즉 보안 취약점을 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일련의 보안 활동이다.

 

2. API

 

2.1 API 정의

API는 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게만든 인터페이스를 말한다.

주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

 

2.2 절차적 언어에서의 API

대부분의 절차적 언어에서 API는 특정한 작업을 수행할 함수들의 집합을 규정하며, 특정 소프트웨어 구성 요소와 상호 작용할 수 있게 한다.

 

2.3 Window API

윈도우 API는 마이크로소프트 윈도 운영 체제들이 사용하는 API이다.

C/C++ 프로그램에서 직접 운영 체제와 상호 작용할 수 있도록 만들어졌으며, 그보다 더 낮은 수준의 제어는 Ntdll.dll을 사용한 낮은 수준의 DLL로 가능하다.

 

2.4 단일 유닉스 규격

단일 유닉스 규격은 컴퓨터의 운영체제가 유닉스란 이름을 사용하기 위해 지켜야 하는 표준 규격의 총칭이다.

SUS는 전기 전자 기술자 협회와 오픈크룹의 표준화 작업 결과물에 바탕을 두고 있으며 , 오스틴 그룹이 개발 및 유지 관리를 담당하고 있다.

단일 유닉스 규격 이전에 존재하였던 POSIX는 ISO/IEC JTC1에서의 작업은 종료되어, 오스텐 그룹이 유지 관리 작업에 관여하고 있다.

 

2.5 Java API

자바 API는 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합이다.

자바라는 언어를 사용하여 사용자의 부담을 최소화하는 반면에 입출력, 화면 구성, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 미리 구현하여 사용자가 쉽게 구현하도록 하는 API이다.

이러한 자바 API는 하나의 커다란 클래스 계층구조로 설계되어 있다.

 

2.6 웹 API

웹 API는 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세를 일컫는다.

예를 들어 블로그 API를 이용하면 블로그에 접속하지 않고도 다른 방법으로 글을 올릴 수 있다.

그 외에 우체국이 우편번호, API, 구글과 네이버의 지도, API등 유용한 API들이 많으므로 요즘은 홈페이지 구축이나 추가개편 시 따로 추가로 개발하지 않고 이런 오픈 API를 가져와 사용하는 추세다.

 

-배치 프로그램 구현

 

1. 배치 프로그램의 이해

 

1.1 배치 프로그램의 개념

배치 프로그램이란 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것이다.

 

1.2 배치 프로그램의 필수 요소

대용량 데이터 : 대용량의 데이터를 처리할 수 있어야 한다.

자동화 : 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다.

견고함 : 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 한다.

안정성 : 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 한다.

성능 : 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 한다.

 

2. 배치 스케줄러

 

2.1 배치 스케줄러의 개념

배치 스케줄러는 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구이다.

 

2.2 배치 스케줄러의 종류

 

1. 스프링 배치

스프링 배치는 Spring Source사와 Accenture사의 공동 작업으로 2007년에 탄생한 배치기반 오픈소스 프레임워크이다.

 

2. Quartz 스케줄러

Quartz 스케줄러란 Spring Framework에 플러그인되어 수행하는 job과 실행 스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케줄러이다.

 

3. 배치프로그램 구현

 

3.1 애플리케이션 설계를 기반으로 배치 프로그램을 확인한다.

프로그램 관리 대상을 확인한다.

배치 설계서를 확인한다.

 

3.2 프로그램 관리 대장의 ID와 일치하는 배치 설계를 확인한다.

 

3.3 애플리케이션 설계를 기반으로 배치 프로그램을 구현한다.

배치프로그램을 구현하기 위한 SQL을 작성한다.

배치프로그램을 구현하기 위한 I/O 오브젝트를 정의한다.

배치 프로그램을 구현하기 위한 데이터 접근 오브젝트를 작성한다.

배치 프로그램을 구현하기 위한 스케줄러 클래스를 작성한다.

'자격증 > 정보처리기사' 카테고리의 다른 글

정보처리기사 37일차  (0) 2021.02.19
정보처리기사 36일차  (0) 2021.02.18
정보처리기사 34일차  (0) 2021.02.12
정보처리기사 33일차  (0) 2021.02.11
정보처리기사 32일차  (0) 2021.02.10

+ Recent posts