서버 프로그램 구현

2022. 6. 7. 15:44정처기(필기)/프로그래밍언어활용

더보기

(1) 보안 취약성 식별

1. 보안 취약성의 개념

- 보안 취약점은 정보시스템에 불법적인 사용자의 접근, 정상적인 서비스를 방해, 정보시스템에서 관리하는 중요 데이터의 유출, 변조, 삭제에 대한 위협

- 응용 프로그램의 보안 취약점, 위협 요소, 허점을 탐지하는데 도움을 준다.

 

 

2. 침투 테스트 개념

- 시스템을 안전하게 만들기 위해 전문 해커가 공격자보다 먼저 시스템의 취약점을 찾기 위한 방법

 

 

3. 취약성에 따른 공격기법

  • 서비스 거부(DoS) - 무의미한 서비스 요청 등의 반복을 통해 특정 시스템의 가용자원을 소모시켜 서비스 가용성을 저하시키는 공격기법
  • 코드 실행 : 응용 프로그램이 적절한 입력 유효성 검사 없이 쉘명령을 실행하는 취약점을 이용하여 공격자가 원하는 임의 코드가 실행되도록 하는 공격기법
  • 버퍼 오버플로우 : 정해진 메모리의 범위를 넘치게 해서 원래의 리턴 주소를 변경시켜 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법
  • 정보 수집 : 공격 전 서버 또는 시스템의 취약점, 네트워크 경로, 방화벽 설치 유무를 알아내고 정보를 수집하는 공격기법
  • 권한 상승 : 악성프로그램 설치 후 데이터 조회, 변경, 삭제 등을 통한 권한 상승으로 루트권한을 획득하는 공격기법
  • SQL 삽입 : 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람할 수 있는 공격기법
  • 크로스 사이트 스크립팅(XSS) : 공격자가 게시판에 악성 스크립트를 삽입
  • 사이트 간 요청 위조 공격(CSRF) : 사용자가 의지와 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청
  • 디렉토리 접근 : HTTP 기반의 공격으로 액세스가 제한된 디렉토리에 접근하여, 서버의 루트 디렉토리에서 외부 명령을 실행하여 파일, 웹 소스 등을 강제로 내려받을 수 있는 공격기법
  • FTP 바운스 공격 : FTP 서버가 데이터를 전송할 때 목적지가 어디인지 검사하지 않는 설계상의 문제점을 이용

 

더보기

(2) API

1. API의 개념

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

- 오픈 API는 누구나 쉽게 접근하여 정보를 공유하기 위해 만들어진 것(기상청 API)

- 비공개 API는 권한이 있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 것(사내 API)

 

2. API의 종류

  • 윈도즈 API : 마이크로소프트 운영체제가 사용하는 API
  • 웹 API : 웹 애플리케이션에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 API(XML, JSON, SOAP, REST)
  • 오픈 API : API 중에서 플랫폼의 기능과 콘텐츠를 외부에서 웹 프로토콜로 호출해 사용할 수 있개 개방한 API
  • 자바 API : 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합

 

더보기

(3) 배치 프로그램

1. 배치 프로그램의 개념

- 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법

 

2. 배치 프로그램의 필수 요소

  • 자동화 : 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함
  • 안정성 : 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 함
  • 대용량 데이터 : 대용량의 데이터를 처리할 수 있어야 함
  • 견고성 : 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 함
  • 성능 : 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 함

 

3. 배치 프로그램의 유형

유형 설명
이벤트 배치 사전에 정의해 둔 조건 충족 시 자동으로 실행
온디맨드 배치 사용자의 명시적 요구가 있을 때마다 실행
정기 배치 정해진 시점에 정기적으로 실행

 

4. 배치 프로그램의 종류

  1. 스프링 배치 : 스프링 프레임워크의 AOP, DI, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러
  2. 쿼츠 스케줄러 : 스프링 프레임워크에 플러그인 되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스 기반 스케줄러