Files
jongryangje/docs/보안관련/01-개인정보_보안_현황.md
2026-04-08 00:23:55 +09:00

59 lines
2.1 KiB
Markdown

# 개인정보·보안 현황
> 현재 구현 기준. DB·세션·로그·화면 접근을 정리한 문서.
---
## 1. 비밀번호
| 항목 | 내용 |
|------|------|
| **저장** | DB에는 **해시만** 저장 (`password_hash(..., PASSWORD_DEFAULT)` → PHP bcrypt) |
| **위치** | `Auth::register`, `Admin\User::store`, `Admin\User::update` |
| **검증** | 로그인 시 `password_verify()` 사용. 평문 비밀번호는 저장·전달하지 않음 |
---
## 2. DB에 저장되는 개인정보(비밀번호 제외)
- **member 테이블**: `mb_id`, `mb_name`, `mb_email`, `mb_phone` 등은 **평문** 저장.
- **암호화**: 애플리케이션 단에서 이 컬럼들에 대한 암호화·복호화는 **없음**.
- **DB 연결**: `app/Config/Database.php` 에서 `'encrypt' => false`. DB 연결 구간 암호화(TLS)는 앱 설정에 없음(서버/DB 설정에 따름).
---
## 3. 세션
- **저장 항목**: `mb_idx`, `mb_id`, `mb_name`, `mb_level`, `logged_in`
- **비밀번호·이메일·연락처는 세션에 넣지 않음.**
---
## 4. 로그(member_log)
- **저장 필드**: `mb_idx`, `mb_id`, `mll_regdate`, `mll_ip`, `mll_msg`, `mll_useragent`, `mll_url`, `mll_referer`
- **비밀번호는 로그에 기록되지 않음.**
- 로그인 시도 시 **아이디(mb_id)** 는 그대로 저장됨(실패/성공 구분용). 마스킹·축약 저장은 없음.
---
## 5. 화면·접근
- 뷰 출력 시 `esc()` 사용 → **XSS** 방지.
- 회원 목록(이름·이메일·연락처 등)은 **관리자만** 조회 가능(`adminAuth` 필터).
---
## 6. 요약
| 구분 | 적용 여부 |
|------|-----------|
| 비밀번호 해시 저장·검증 | ✅ 적용 |
| 세션에 비밀번호 미저장 | ✅ 적용 |
| 로그에 비밀번호 미기록 | ✅ 적용 |
| 출력 이스케이프(esc) | ✅ 적용 |
| 관리자만 회원 목록 조회 | ✅ 적용 |
| 이름·이메일·연락처 DB 암호화 | ⚠️ 선택 적용 (키 설정 시 `mb_phone`, `mb_email` 암호화. [03-개인정보_암호화.md](03-개인정보_암호화.md) 참고) |
| 로그의 mb_id 마스킹 | ❌ 미적용 |
| DB 연결 암호화(TLS) 설정 | ❌ 앱 설정 없음 |