1. 보안 (Security)과 관련된 문제들은 어떤 것이 있나요?
인증 및 권한 부여: 사용자 인증 및 권한 부여를 통해 민감한 데이터에 대한 접근을 제어해야 합니다. 이를 위해 일반적으로 사용자 이름과 비밀번호를 사용하여 사용자를 인증하고, 권한 부여 시스템을 통해 사용자의 권한을 관리합니다.
데이터 암호화: 전송 중이거나 저장된 데이터를 암호화하여 데이터 유출을 방지해야 합니다. 이를 위해 SSL/TLS와 같은 프로토콜을 사용하여 데이터를 전송하고, AES와 같은 암호화 알고리즘을 사용하여 데이터를 저장합니다.
SQL 인젝션: 악의적인 SQL 쿼리가 실행되지 않도록 쿼리를 검증하고 필터링해야 합니다. 이를 위해 Prepared Statement와 같은 기술을 사용하여 쿼리를 안전하게 생성하고 실행합니다.
SQL 인젝션 공격을 방지하기 위해서는 다음과 같은 방법들이 있습니다:
Prepared Statement: Prepared Statement를 사용하여 쿼리를 생성하고 실행합니다.
Prepared Statement는 쿼리 템플릿과 변수값을 분리하여 처리하므로, SQL 인젝션 공격이 불가능합니다.
입력값 검증: 사용자로부터 입력받은 값에 대해 검증 및 필터링을 수행합니다.
정규식 등의 기술을 사용하여 입력값이 유효한지 확인하고, 유효하지 않은 경우 에러 메시지를 반환합니다.
XSS (Cross-Site Scripting): 악의적인 스크립트가 실행되지 않도록 입력값을 검증하고 필터링해야 합니다. 이를 위해 입력값을 검증하는 정규식과 같은 기술을 사용하여 입력값을 필터링하고, 출력 시에는 HTML 인코딩과 같은 기술을 사용하여 스크립트가 실행되지 않도록 합니다.
XSS 공격을 방지하기 위해서는 다음과 같은 방법들이 있습니다:
출력값 인코딩: 사용자로부터 입력받은 값을 출력할 때 HTML 인코딩을 수행합니다.
이를 통해 <, >, & 등의 문자가 HTML 태그로 해석되지 않도록 합니다.
입력값 검증: 사용자로부터 입력받은 값에 대해 검증 및 필터링을 수행합니다.
정규식 등의 기술을 사용하여 입력값이 유효한지 확인하고, 유효하지 않은 경우 에러 메시지를 반환합니다.
CSRF (Cross-Site Request Forgery): 사용자가 의도하지 않은 요청이 전송되지 않도록 CSRF 토큰 등의 방법을 사용하여 요청을 검증해야 합니다. 이를 위해 CSRF 토큰을 생성하여 폼에 포함시키고, 요청 시에는 CSRF 토큰 값을 검증하여 유효한 요청인지 확인합니다.
CSRF 공격을 방지하기 위해서는 다음과 같은 방법들이 있습니다:
CSRF 토큰: CSRF 토큰을 생성하여 폼에 포함시킵니다. 요청 시 CSRF 토큰 값을 검증하여 유효한 요청인지 확인.
Referrer 검증: 요청의 Referer 헤더 값을 검증하여 요청이 유효한 페이지에서 전송되었는지 확인합니다.
2. 개발 방법론 (Development Methodology)에 대해 설명해보세요.
개발 방법론(Development Methodology)은 소프트웨어 개발 프로젝트를 수행하는 데 사용되는 일련의 프로세스와 절차를 말합니다. 이는 프로젝트의 일정, 예산, 품질 등을 관리하고 효율적으로 개발을 진행하기 위해 사용됩니다.
개발 방법론에는 여러 종류가 있습니다. 대표적인 예로는 다음과 같습니다:
Waterfall: 전통적인 개발 방법론으로, 각 단계가 순차적으로 진행됩니다. 요구사항 분석, 설계, 구현, 테스트, 유지보수 등의 단계로 구성됩니다.
장점: 각 단계가 명확하게 구분되어 있어 일정 관리가 용이하고, 문서화가 철저하여 프로젝트의 전체적인 흐름을 파악하기 쉽습니다.
단점: 각 단계가 순차적으로 진행되므로 유연성이 떨어지고, 고객의 요구사항 변화에 대응하기 어렵습니다. 또한 테스트 단계가 마지막에 위치하여 결함이 늦게 발견될 수 있습니다
Agile: 유연한 개발 방법론으로, 고객의 요구사항 변화에 빠르게 대응할 수 있도록 개발 프로세스가 짧은 주기로 반복됩니다. Scrum, Kanban 등이 이에 속합니다.
장점: 짧은 주기로 개발 프로세스가 반복되므로 고객의 요구사항 변화에 빠르게 대응할 수 있습니다. 또한 지속적인 테스트와 피드백을 통해 결함을 빠르게 발견하고 수정할 수 있습니다.
단점: 일정 관리가 어렵고, 문서화가 부족할 수 있습니다. 또한 고객과의 지속적인 소통이 필요하므로 고객의 참여가 활발하지 않으면 프로젝트 진행이 어려울 수 있습니다.
DevOps: 개발(Development)과 운영(Operations)의 협업을 강조하는 개발 방법론으로, 지속적인 통합(CI)과 지속적인 배포(CD)를 통해 빠른 배포와 높은 서비스 품질을 달성하는 것을 목표로 합니다.
장점: 개발과 운영의 협업을 강조하여 개발 속도를 높이고 서비스 품질을 개선할 수 있습니다. 지속적인 통합(CI)과 지속적인 배포(CD)를 통해 빠른 배포와 신속한 대응이 가능합니다.
단점: 개발과 운영의 역할 구분이 모호해질 수 있고, 새로운 도구와 기술의 도입이 필요하여 학습 비용이 발생할 수 있습니다.
'코딩공부 > 개발지식' 카테고리의 다른 글
[7회 - 데일리과제] 모듈 / 테스트 (0) | 2023.04.21 |
---|---|
[6회 - 데일리과제] Promise, async & await / 클로저 (0) | 2023.04.20 |
[4.5회 - 데일리과제] Call by Value vs Call by Reference (0) | 2023.04.19 |
[4회 - 데일리과제] 자료구조와 알고리즘 / 데이터베이스와 ORM (0) | 2023.04.18 |
[3회 - 데일리과제] HTTP/HTTPS & RESTful API (0) | 2023.04.17 |