Día de Ruru
[JS]보안과 개발 방법론 본문
1. 보안 (Security)과 관련된 문제
- 크로스 사이트 스크립팅 (Cross-Site Scripting, XSS): XSS는 사용자로부터 입력된 데이터를 적절하게 처리하지 않을 때 발생할 수 있는 취약점입니다. 악의적인 사용자가 스크립트 코드를 삽입하여 웹 페이지에 표시되거나 실행되도록 만들 수 있습니다. 이를 통해 사용자의 개인 정보를 탈취하거나 악성 행동을 수행할 수 있습니다.
- 크로스 사이트 요청 위조 (Cross-Site Request Forgery, CSRF): CSRF는 인증된 사용자의 의도와 상관없이 악의적인 웹 사이트가 사용자의 권한으로 다른 웹 사이트에 요청을 보내는 공격입니다. 이를 통해 사용자의 계정이 탈취되거나 비정상적인 동작이 발생할 수 있습니다.
- 클릭재킹 (Clickjacking): 클릭재킹은 악의적인 웹 사이트에서 사용자의 클릭을 속여 다른 웹 요소를 클릭하도록 유도하는 공격입니다. 이를 통해 사용자의 클릭 동작을 이용하여 악성 행동을 수행할 수 있습니다.
- 자바스크립트 인젝션 (JavaScript Injection): 자바스크립트 인젝션은 악의적인 사용자가 자바스크립트 코드를 삽입하여 웹 애플리케이션에서 실행되도록 만드는 공격입니다. 이를 통해 사용자의 세션 정보를 탈취하거나 악성 행동을 수행할 수 있습니다.
- 취약한 인증 및 세션 관리: 자바스크립트에서 사용되는 인증 및 세션 관리 기능의 구현 실수로 인해 보안 위협이 발생할 수 있습니다. 예를 들어, 취약한 세션 관리로 인해 다른 사용자의 세션을 탈취하거나, 인증 절차가 부적절하게 이루어져 인증 우회가 가능해질 수 있습니다.
- 암호화와 관련된 문제: 자바스크립트를 사용하여 데이터를 암호화하거나 복호화할 때 적절한 암호화 알고리즘과 키 관리 방법을 사용하지 않으면 보안성이 저하될 수 있습니다. 암호화 관련 취약점은 데이터 노출 위험을 야기할 수 있습니다.
- 악성 라이브러리 및 외부 의존성: 자바스크립트에서 외부 라이브러리나 의존성을 사용할 때, 신뢰할 수 없는 소스에서 가져온 코드가 악성 코드로 감염되어있을 수 있습니다. 이를 통해 공격자는 사용자의 정보를 탈취하거나 악성 행동을 수행할 수 있습니다.
2. 개발 방법론 (Development Methodology)
소프트웨어 개발방법론은 소프트웨어를 개발하는 방법에 대한 이론으로서, 소프트웨어 개발 과정, 절차, 방법, 산출물, 기법, 도구들을 체계적으로 정리하고 표준화시킨 것입니다.
1. 구조적 방법론
: 요구사항 분석 → 구조적 분석 → 구조적 설계 → 구조적 프로그래밍의 순서로 이루어진다.
- 장점
→ 정형화/체계화 : 명확한 요구사항을 추출하여 설계에 반영 가능
→ 모듈화 : 효율적인 재사용 및 유지보수 가능
- 단점
→ 실제 사례 자료 부족으로 데이터 모델링 방법과 명확한 방법론적 지침이 미흡하다.
→ 유지보수성 및 재사용성이 낮기 때문에 기능이 불완전하고 자주 변한다.
2. 정보공학 개발 방법론
: 기업 전체, 또는 기업의 주요부분을 계획, 분석, 설계및 구축에 정형화된 기법들을 상호 연관성 있게 통합, 적용하는 데이터 중심 방법론이다.
- 절차
1. 정보전략계획 수립단계
2. 업무영역 분석단계
3. 시스템 설계단계
4. 시스템 구축단계
3. 객체지향 개발 방법론
: 현실 세계의 개체를 속성과 메소드가 결합된 형태의 객체로 표현하며, 현실 세계에 존재하는 실체 및 개년들을 객체 라는 독립된 단위로 구성하고 이 객체들이 메세지 교환을 통해 상호작용함으로써 전체 시스템이 운영되는 개념이다.
→ 객체지향 개발 방법론에서는 분석, 설계, 구현의 전 과정을 객체 중심으로 진행한다
→ 데이터를 저장하는 테이블도 따로 설계하지 않고 데이터 객체로 설계한다. 이 때 관계형 DB를 사용한다면 객체를 관계형 테이블로 변환하는 과정이 필요하며 이것을 객체-관계 매핑이라 한다.
4. CBD(컴포넌트 기반) 개발 방법론
: 개발된 S/W 컴포넌트를 조립, 시스템을 개발하여 객체지향의 단점인 S/W 재사용성을 극대화한 개발 방법론이다.
→ CBD 개발 방법론은 크게 컴포넌트를 개발하는 CD단계와 개발된 컴포넌트를 사용해서 개발을 진행하는 CBD 단계로 나눈다.
→ CD 단계에서는 도메인을 분석해 컴포넌트 대상 업무를 선별하고 컴포넌트를 개발해 저장소에 입력한다.
→ CBD 단계에서는 요구 분석을 통해 컴포넌트 기반으로 설계하고 필요한 컴포넌트를 저장소에서 찾아서 조립하는 방식으로 프로그램 개발을 진행한다.
5. 애자일 개발 방법론
: 애자일 개발 방법론은 기존 방법론들이 너무 절차를 중시한 나머지 변화에 대응하기 어려웠던 단점을 개선하기 위해 나왔다. 애자일 방법론은 절차보다는 사람을, 문서보다는 작동하는 소프트웨어를, 미리 철저하게 계획하기 보다는 변화에 대한 민첩한 대응을, 계약과 협상에 얽매이기 보다는 고객과의 협력을 중요하게 생각한다.
: 애자일 방법론은 먼저 개발 범위안에 있는 요구사항을 분석해 우선순위가 높은 요구사항을 먼저 개발하고 개발된 부분을 고객에게 보여준 후 고객의 평가를 받고 다음 요구 사항 개발에 참고하는 방식으로 진행된다.
'JS' 카테고리의 다른 글
Node.js에서의 모듈시스템 (0) | 2023.06.08 |
---|---|
[CS]웹서버와 WAS, 프로그래밍 언어와 스크립트 언어 (0) | 2023.06.08 |
[JS] 자료구조와 알고리즘, 데이터베이스와 ORM (0) | 2023.06.05 |
[JS]HTTP와 HTTPS, RESTful API (0) | 2023.06.01 |
[JS]동기와 비동기, 스레드와 프로세스 (0) | 2023.05.31 |