목차
📌 소프트웨어 개발 보안은 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미한다.
💡 기밀성 : 정보의 비밀을 유지
💡 무결성 : 비인가된 변경으로부터 정보를 보호
💡 가용성 : 필요할 때 언제든지 사용할 수 있도록 함
💡 소프트웨어 개발 보안 가이드 : 안전한 소프트웨어 개발을 위해 정부에서 제작하여 배포하고 있는 지침으로 한국인터넷진흥원 사이트(kisa.or.kr)에서 다운받을 수 있다.
📌 소프트웨어 개발 보안 점검 항목은 소프트웨어 개발의 각 단계에서 점검되어야 할 보안 항목들을 말한다.
세션 통제 | - 세션은 서버와 클라이언트의 연결을 말하며, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것을 의미한다. - 보안 약점에는 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출 등이 있다. |
입력 데이터 검증 및 표현 |
- 입력 데이터에 대한 유효성 검증 체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩하는 것을 의미한다. - 보안 약점에는 SQL 삽입, 경로 조작 및 자원 삽입, 크로스 사이트 스크립팅(XSS)등이 있다. |
보안 기능 | - 인증, 접근제어, 기밀성, 암호화 등의 기능을 의미한다. - 보안 약점에는 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 있다. |
시간 및 상태 | - 동시 수행을 지원하는 병렬 처리 시스템이다 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리 하여 시스템이 원활히 동작되도록 코딩하는 것을 의미한다. - 보안 약점에는 검사 시점과 사용 시점(TOCTOU) 경쟁 조건, 종료되지 않는 반복문 또는 재귀함수 등이 있다. |
에러 처리 | - 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 에어로 인해 발생할 수 있는 문제들을 예방하는 것을 의미한다. - 보안 약점에는 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재 등이 있다. |
코드 오류 | - 개발자들이 코딩 중 실수하기 쉬운 형(Type) 변환, 자원의 반환 등을 고려하며 코딩하는 것을 의미한다. - 보안 약점에는 널 포인터 역참조, 부적절한 자원 해제 등이 있다. |
캡슐화 | - 데이터(속성)와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것을 의미한다. - 보안 약점에는 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드 등이 있다. |
API 오용 | - API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것을 의미한다. - 보안 약점에는 DNS lookup에 의존한 보안결정, 취약한 API사용이 있다. |
💡 크로스 사이트 스크립팅(Cross Site Scripting, XSS)은 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 말한다.
💡 DNS Lookup : 리눅스, 맥OS, 윈도우 등에서 nslookup라는 명령어로 DNS 레코드를 조회할 때 사용하는 것이라고 생각하면 된다.
📌 API는 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스를 의미한다.
📌 배치 프로그램은 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미한다.
정기 배치 | 일, 주, 월과 같이 정해진 기간에 정기적으로 수행된다. |
이벤트성 배치 | 특정 조건을 설정해두고 조건이 충족될 때만 수행된다. |
On-Demand 배치 | 사용자 요청 시 수행된다. |
대용량 데이터 | 대량의 데이터를 가져오거나, 전달하거나 계산하는 등의 처리가 가능해야 한다. |
자동화 | 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 한다. |
견고성 | 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 한다. |
안정성/신회성 | 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 한다. |
성능 | 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료 되어야 한다. |
📌 배치 스케줄러는 일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구이다.
Job | 수행할 작업 정의 |
Job Launcher | 실행을 위한 인터페이스 |
Step | Job 처리를 위한 제어 정보 |
Job Repository | Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장 |
Scheduler | 실행 환경 관리 |
Job | 수행할 작업 정의 |
JobDetail | Job의 상세 정보 |
Trigger | Job의 실행 스케줄 정의 |
📌 패키지 소프트웨어는 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어를 의미한다.
📌 패키지 소프트웨어는 요구사항을 분석하여 업무 특성에 맞게 전용으로 개발되는 소프트웨어와 비교하여 안정성, 라이선스, 생산성 등에서 차이가 있다.
💡 전용 개발 소프트웨어는 패키지 소프트웨어에 대응되는 용어로 사업 환경에 맞춰 직점 개발한 소프트웨어를 의미한다.
패키지 소프트웨어 | 전용 개발 소프트웨어 | |
기능 요구사항 | 70% 이상 충족시키는 패키지 소프트웨어가 있는 경우 이용 | 모든 기능 요구사항 반영 가능 |
안정성 | 품질이 검증되었고, 업계 표준 준용 | 개발자의 역량에 따라 달라짐 |
라이선스 | 판매자 | 회사 |
생산성 | 개발을 위한 인력과 시간이 절약됨 | 개발을 위한 인력과시간이 필요함 |
호환성 | 보장이 안 됨 | 설계 단계부터 고려하여 개발 |
유지보수 | 결함 발생 시 즉시 대응이 어려움 | 결함 발생 시 즉시 대응이 가능 |
📌 [정보처리기사] 서버프로그램 구현 - 개발환경 구축/서버 개발 (1) | 2024.02.26 |
---|---|
📌 [정보처리기사] SQL 활용 - ORM(Object-Relational Mapping)/쿼리 성능 최적화 (4) | 2024.02.26 |
📌 [정보처리기사] SQL 활용 - SQL 테스트 (0) | 2024.02.22 |
📌 SQL 활용 - 사용자 정의 함수/DBMS 접속 기술 (0) | 2024.02.22 |
📌 [정보처리기사] SQL 활용 - 프로시저(Procedure)/트리거(Trigger) (0) | 2024.02.21 |