본문 바로가기

스터디스터디/정처기

[실기] 소프트웨어 구축- 서버프로그램 구현

최초 작성일: 2024-08-28

최종 작성일: 2024-08-28

목표 : 정처기 합격 및 CS 지식 쌓기

 

 

1. 서버 프로그램 구현 -> 백엔드 개발 쪽에 해당
(1) 업무 프로세스 확인
1) 업무 프로세스의 개념 : 개인이나 조직이 자원을 입력하여 가치 있는 산출물을 제공하는 일련의 활동
공급자(supplier) -> 프로세스 -> 고객
(입력값과 출력값)
2) 업무 프로세스 구성 요소 : 프로세스 책임자, 프로세스 맵, 프로세스 Task 정의서, 프로세스 성과 지표, 프로세스 조직, 경영자의 리더십
(2) 서버 프로그램 구현
업무 프로세스를 기반으로 서버에서 서비스를 제공하는 기능을 개발하는 활동

M: 모델 - 데이터 베이스
V: 뷰  - 화면 단 ->   HTML
C: 컨트롤러 - 업무 처리, 비즈니스 로직 -> 데이터 베이스를 호출하여 계산을 진행

구현 요소 
DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 / 주로 getter와 setter 메서드를 이용
VO(Value Object) : 도메인의 속성을 묶어 특정 값을 나타내는 객체/ DTO와 유사하지만 주로 읽기 전용
DAO(Data Access Object) : 데이터 베이스 접근을 수행하는 객체/ DB 접근 로직과 비즈니스 로직을 분리하기 위해 사용
Service : DAO클래스를 호출하고 비즈니스 로직을 처리하는 객체
Controller : 사용자의 요청을 처리하고, 비즈니스 로직을 수행하는 객체

(3) MVC 모델의 계측
1)프레젠테이션 계층 (Presentation Layer) -view 단
사용자 인터페이스와 관련된 부분을 담당
사용자가 시스템과 상호작용할 수 있는 기능 및 부가 정보를 제공
사용자의 요청을 받아 해당 요청에 대한 적절한 응답을 생성하는 역할

2)제어 계층 (Control Layer)
프레젠테이션 계층과 비즈니스 로직 계층 간의 중간자 역할
사용자의 요청을 분석하고 적절한 비즈니스 로직을 호출
사용자 요청 검증, 요청에 대한 로직 처리 결정, 로직 처리 결과를 적절한 뷰에 전달

3) 비즈니스 로직 계층
애플리케이션의 핵심 업무 로직 처리
데이터의 적합성 검증, 트랜잭션 처리 등을 포함

4) 퍼시스턴스 계층
데이터 관리와 관련된 모든 작업을 담당
CRUD(생성, 수정, 삭제, 선택) 연산을 수행

5)도메일 모델 계층
실질적인 비즈니스 객체
이 계층의 객체는 다른 계층 간에 데이터를 전달한다
데이터 전송 객체(DTO)를 사용하여 계층 간 데이터를 전달 한다

2.DBMS 접속 기술
(1) DBMS 접속 기술의 개념
프로그램에서 데이터 베이스에 접근하여 DML을 사용할 수 있게 하는 기술
프로그램과 db간의 여결을 가능하게 하는 인터페이스 를 제공

(2)DBMS 접속 기술 종류
1) 소켓통신
응용 프로그램과 DBMS 간에 주고 받는 통신 방법
DBMS 제공업체가 통신 프로토콜을 공개하지 않는 경우가 많아 개발이 어렵다

2)Vender API
각 DBMS 제공 업체에서 공개한 API를 이용해 DBMS와 통신하는 방식
DBMS 제공 업체마다 API 사용벙이 다르기 때문에 호환성 문제가 발생할 수 있다

3)JDBC(Java Database Connectivity)
Java 언어를 사용하여 db에 접속하고 SQL문을 수행할떄 사용되는 표준 API
접속하려는 DBMS에 맞는 드라이버가 필요함

4) ODBC( Open Database Connectivity)
데이터베이스에 접근하기 위한 표준 규격
개발 언어에 관계없이 사용할 수 있다
1990년대 초 MS 사에서 개발됨

3. ORM(Object-Relational Mapping) 프레임 워크
(1) ORM 프레임워크의 개념
객체 지향 프로그래밍과 관계형 데이터 베이스 간의 호환성 격차를 해결하기 위한 프로그래밍 기법
애플리케이션의 클래스와 데이터베이스의 테이블 사이의 매핑을 제공함으로써 객체지향 프로그램에서 데이터 베이스를 더 쉽게 사용할 수 있게 해준다

(2) ORM 장/단점
장점 
-개발자가 비즈니스 로직에 더 집중할 수 있도록 해준다
-코드의 재사용성 및 유지 보수성을 향상시킨다
-데이터 베이스 시스템과의 결합도를 낮추어, 데이터 베이스 변경이나 마이그레이션이 용이하다

단점
-복잡한 쿼리나 특화된 데이터 베이스 기능을 사용하는 경우, ORM의 제한 때문에 구현이 어렵다
-프로시저를 많이 사용하는 시스템 에서는 ORM의 객체지향적 장점을 제대로 활용하기 어렵다

(3) 매핑 기술 비교
1)SQL Mapper
sql문을 명시하여 단순히 필드를 매핑시키는 것이 목적
sql 문장으로 직접 데이터베이스 데이터를 다룬다
종류: 아이바티스, 마이바티스, JDBC, Tempaltes 등
2)OR Mapping(ORM)- 실직적인 ORM/ 쿼리를 안쓰고 객체로 매핑
객체를 통해 간접적으로 데이터베이스를 다룬다
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑
ORM을 이용하면 SQL Query가 아닌 직관적인 코드로 데이터를 조작할 수 있다
종류: JPA(Java Persistent APLI), hIBERNATE

4. 시큐어 코딩(kisa, 시큐어 코딩 가이드)
(1)owasp(the open web application security project)
오픈소스 웹 어플리케이션 보안 프로젝트
웹 어플리케이션 보안 취약점 연구, 정보 노출 및 악성파일/스크립트 보안 취약점 해결하기
OWASP Top 10: 빈번하고 영향력있는 웹 어플리케이션 취약점 상위 10가지 발표

(2)시큐어 코딩 가이드
1) 개녕 
해킹 등 사이버 공격의 원인인 보안 취약점을 제거해 안전한 소프트웨어를 개발하는 sw 개발 기법
2)가이드 항목
2)-1. 입력 데이터 검증 및 표형 : 프로그램 입력 값에 대한 검증 누락이나 부적절한 검증, 데이터 형식 지정 오류 등으로 보안 약점
입력 데이터 검증 및 표현 - 보안 약점 종류
sql injection : sql 쿼리 삽입을 통한 데이터베이스 정보 열람 및 조작(입력하는 데이터에 쿼리문 삽입 )
XSS(크로스 사이트 스크립트) : 사용자 측에서 실행되는 악의적 스크립트 삽입(JS를 삽입하는 공격 - 쿠키 정보 탈취)
자원 삽입 : 외부 입력값이 시스템 자원 접근 경로 또는 자원 제어에 사용
위험한 형식 파일 업로드* : 서버 측에서 실행 가능한 스크립트 파일 업로드 
명령 삽입 :운영체제 명령어 삽입
메모리 버퍼 오버프로 : 입력값으로 인해 버퍼가 넘쳐 다른 메모리 공간 침범
2)-2 보안기능: 보안 기능을 부적벌하게 구현하는 경우, 발생할 수 있는 보안 약점
종류
적절한 인증 없이 중요기능 허용
부적절한 인가
취약한 암호화 알고리즘 사용
하드코딩 된 패스워드
패스워드 평문 저장 : 계정 정보 탈취 시 패스워드가 쉽게 노출될 수 있음
취약한 패스워드 허용 : 비밀번호 조합규칙이 미흡하거나 길이가 충분하지 않을 때 발생

2)-3 시간 및 상태 : 동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서
시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점
종류
경쟁 조건
종료죄디 않는 반복문 또는 재귀함수

2)-4 에러 처리 : 에러를 처리하지 않거나 불충분하게 처리하여 에러 정보에 중요 정보가 포함될때 발생 할 수 있는 보안 약점
종류
오류 메세지 정보 노출
오류 상황 대응 부재
부적절한 예외 처리

2)-5 코드 오류 : 개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점
종류
널 포인터 역함조
부적절한 자원 해제
초기화 되지 않는 변수 사용
해제된 자원 사용

캡슐화 : 중요한 데이터 또는 기능성을 불충분하게 캡슐화하거나 잘못 사용해 발생하는 보안 약점
종류
잘못된 세션에 의한 정보 노출
제거 되지 않은 디버그 코드
시스템 정보 노출
잘못된 접근 지정자

API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점

종류
DNS에 의존한 보안 결정 : 공격자가 DNS정보를 변조회 보안 결정 우회 가능 (NAVER.COM -> DNS서버를 통해서 -> 실제 접근 가능한 주소로 변환)
취약한 API 사용