안녕하세요! 이번 블로그 포스트에서는 소프트웨어 서버 프로그램 구현에 관한 주요 개념과 안전한 코딩에 대한 내용을 다뤄보겠습니다.
업무 프로세스 개념
개인이나 조직이 한 개 이상의 자원 입력을 통해 가치 있는 산출물을 제공하는 활동
업무 프로세스 구성 요소
프로세스 책임자
프로세스 맵
프로세스 Task 정의서
프로세스 성과 지표
프로세스 조직
경영자의 리더십
서버 프로그램 구현
업무 프로세스를 기반으로 구현하는 활동
MVC 모델의 계층
프레젠테이션 계층 - 사용자의 화면을 담당
제어 계층 - 어떤 요청이 들어올 때 어떤 로직이 처리해야 하는지 결정하는 역할
비즈니스 로직 계층 - 실제로 뭔가 만드는 계층
퍼시스턴스 계층 - 데이터 처리를 담당하는 계층
도메인 모델 계층 - 그 안에 있는 데이터들의 모음
DMS 접속기술
개념
프로그램이 DB를 연결해주는 인터페이스이다.
DBMS 접속기술 종류
소켓통신
Vender API
JDBC
ODBC
ORM 프레임워크
개념
객체와 관계형 데이터베이스를 데이터를 자동으로 매핑(연결)해 주는 것
ORM 장/단점
장점 : 비즈니스 로직에 더 집중할 수 있다.
단점 : 완벽한 ORM으로만 서비스를 구현하기 어렵다.
매핑 기술 비교
SQL Mapper , 종류 : Mybatis
OR Mappuing(=ORM) , 종류 : JPA
시큐어 코딩
OWASP : 주로 웹에 관한 정보 노출, 악성 파일 및 스크립트 보안 취약점 등을 연구하는 단체
OWASP Top 10
웹 애플리케이션 취약점 중 빈도가 많이 발생하고, 보안상 영향을 줄 수 있는 10가지를 선정하여 발표
시큐어 코딩 가이드의 개념
개발자의 실수나 논리적 오류로 인해 발생할 수 있는 문제점을 사전에 차단하여 대응하고자 하는 것
시큐어 코딩 가이드 항목
입력 데이터 검증 및 표현
보안 약점 종류
SQL Injection - SQL문을 삽입하여 DB로부터 정보를 열람 및 조작할 수 있는 공격
XSS(크로스 사이트 스크립트) - 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도하는 공격
자원 삽입 - 외부 입력값이 시스템 자원 접근 경로 또는 자원 제어에 사용되는 공격
위험한 형식 파일 업로드 - 서버 측에서 실행될 수 있는 스크립트 파일을 업로드 하여 공격
명령삽입
운영체제 명령어 삽입
XQuery 삽입
XPath 삽입
LDAP 삽입
메모리 버퍼 오버프로 - 입력받는 값이 버퍼를 가득 채우다 못해 넘쳐흘러 버퍼 이후의 공간을 침범 하는 공격
보안 기능
적절한 인증 없이 중요기능 허용
부적절한 인가
취약한 아호화 알고리즘 사용
하드코딩된 패스워드
패스워드 평문 저장
취약한 패스워드 허용
시간 및 상태
경쟁 조건
종료되지 않는 반복문 또는 재귀 함수
에러 처리
오류 메시지 정보 노출
오류 상황 대응 부재
부적절한 예외 처리
코드 오류
널 포인터 역참조
부적잘한 자원 해제
해제된 자원 사용
초기화되지 않은 변수 사용
캡슐화
잘못된 세션에 의한 정보 노출
제거되지 않은 디버그 코드
시스템 정보 노출
잘못된 접근 지정자
API 오용
DNS에 의존한 보안 결정
취약한 API 사용
이번 포스트에서는 소프트웨어 서버 프로그램 구현과 관련된 핵심 개념들과 안전한 코딩에 대해 알아보았습니다. 비즈니스 프로세스를 중심으로 서버를 구현하고, MVC 모델을 활용하여 각 계층을 구분하는 것이 중요하며, 보안 코딩은 프로그램의 안정성을 높이기 위해 반드시 고려되어야 합니다. 2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!