# 보안(Security)

### 보안 개요

보안(Security)이란 시스템, 네트워크, 애플리케이션을 허가되지 않은 접근, 정보 유출, 변조, 파괴로부터 보호하는 것을 의미합니다. 보안의 주요 목적은 **기밀성(Confidentiality)**, **무결성(Integrity)**, **가용성(Availability)**&#xC744; 보장하는 것입니다.

### 보안의 주요 요소

* **데이터 보호**:
  * **개인 정보 보호**: 사용자 이름, 비밀번호, 신용카드 정보 등의 유출을 방지하여 사용자 피해를 예방합니다.
  * **기밀 데이터 보호**: 기업의 중요한 정보를 보호하여 경쟁 우위를 유지합니다.
  * **비인가 접근 차단**: 악의적인 사용자로부터 시스템을 보호합니다.
* **데이터 무결성**:
  * **데이터 변경 방지**: 무단으로 데이터가 변경되거나 삭제되는 것을 방지하여 데이터의 신뢰성을 유지합니다.
  * **데이터 일관성 유지**: 데이터가 일관되게 유지되도록 하여 시스템 운영의 안정성을 확보합니다.
  * **변경 이력 관리**: 데이터 변경 이력을 추적하여 문제가 발생 시 신속히 원인을 파악하고 복구할 수 있도록 지원합니다.
* **서비스 가용성 유지**:
  * **DDoS 공격 방어**: 시스템을 보호하여 연속적인 서비스 제공을 보장합니다.
  * **빠른 복구**: 보안 사고 발생 시 신속하게 복구하여 서비스 지속성을 확보합니다.

### 보안의 중요성

* **신뢰성 유지**: 사용자가 시스템을 신뢰하고 사용할 수 있도록 보안은 필수입니다.
* **법적 및 규제 준수**: 개인정보 보호법과 같은 법적 규제를 준수하여 벌금 및 법적 책임을 피합니다.

### 주요 보안 위협

* **해킹(Hacking)**: 불법적으로 시스템에 접근해 데이터를 훔치거나 변경하는 행위입니다.
* **피싱(Phishing)**: 이메일이나 메시지로 위장하여 사용자로부터 민감한 정보를 빼내는 사기 행위입니다.
* **악성코드(Malware)**: 컴퓨터 시스템을 감염시켜 데이터를 손상시키거나 정보를 빼내는 소프트웨어입니다.

### 웹 애플리케이션에서의 보안 위협

* **인증(Authentication)**: 시스템이 사용자의 신원을 확인하는 과정입니다.
* **인가(Authorization)**: 사용자가 어떤 자원에 접근할 수 있는지를 결정하는 과정입니다.
* **세션 관리(Session Management)**: 사용자와 서버 간의 상태를 유지하는 방법으로, 세션 하이재킹(Session Hijacking)과 같은 위협에 대비해야 합니다.
* **데이터 암호화(Encryption)**: 데이터가 이동 중에 도청되지 않도록 암호화하는 과정입니다.

### 보충: 세션 하이재킹(Session Hijacking)

세션 하이재킹이란 공격자가 사용자의 세션 ID를 탈취하여 해당 사용자의 신분으로 서버에 접근하는 공격 방식입니다. 주로 네트워크 스니핑, 악성 스크립트 삽입(XSS), 세션 ID 예측 등을 통해 이루어집니다.

1. **세션 생성**: 사용자가 웹 애플리케이션에 로그인하면 서버는 고유한 세션 ID를 생성하여 사용자에게 부여합니다.
2. **세션 ID 탈취**: 공격자는 세션 ID를 여러 방법을 통해 탈취합니다.
3. **세션 ID 사용**: 탈취한 세션 ID를 이용해 서버에 접근하여 정상적인 사용자의 권한으로 다양한 작업을 수행합니다.
4. **악의적인 활동**: 공격자는 사용자로서 서버에 접근해 민감한 정보에 접근하거나 중요한 작업을 수행할 수 있습니다.
