보안
Moraya는 보안을 우선으로 설계되었습니다. 이 페이지에서는 애플리케이션에 내장된 주요 보안 조치를 설명합니다.
API 키 저장 (OS Keychain)
API 키는 운영 체제의 네이티브 자격 증명 관리자에 암호화되어 저장됩니다:
| 플랫폼 | 저장소 |
|---|---|
| macOS | Keychain Access |
| Windows | Credential Manager |
| Linux | libsecret / Secret Service |
키는 일반 텍스트 파일에 저장되거나 프론트엔드 JavaScript에 노출되지 않습니다.
Rust AI 프록시
모든 LLM API 호출은 Rust 백엔드를 통해 라우팅됩니다:
- 프론트엔드가 Tauri IPC를 통해 Rust에 요청을 보냅니다
- Rust가 OS Keychain에서 API 키를 가져옵니다
- Rust가 인증 헤더를 추가하고 요청을 제공업체로 전달합니다
- 응답이 프론트엔드로 스트리밍됩니다
이를 통해 API 키가 브라우저 개발자 도구, 네트워크 검사, WebView 메모리에 노출되는 것을 방지합니다.
콘텐츠 보안 정책 (CSP)
Tauri의 CSP 구성은 WebView가 로드하고 실행할 수 있는 것을 제한합니다:
script-src 'self'— 애플리케이션 번들의 스크립트만 허용connect-src ipc:— Tauri IPC를 통한 네트워크 요청만 허용
이를 통해 크로스 사이트 스크립팅 (XSS) 및 무단 외부 연결을 방지합니다.
MCP 보안
MCP 서버 프로세스는 여러 계층으로 보호됩니다:
- 시작 확인 — 새 서버에 연결하기 전에 사용자 승인이 필요합니다
- 명령어 검증 — 주입을 방지하기 위해 셸 메타 문자가 거부됩니다
- 좀비 프로세스 정리 — 고아 MCP 프로세스가 자동으로 종료됩니다
- 응답 버퍼 제한 — 줄당 64KB, 최대 1000회 반복
- 환경 변수 필터링 — 위험한 변수 (
LD_PRELOAD,DYLD_*등)가 차단됩니다 - 동적 서비스 코드 확인 — AI 생성 MCP 코드는 실행 전에 사용자 승인이 필요합니다
경로 순회 보호
파일 작업은 디렉토리 순회 공격을 방지하기 위해 모든 경로를 검증합니다:
- 접근 전에 경로가 정규화됩니다
- 순회 패턴 (
../)이 거부됩니다 - 접근이 사용자의 홈 디렉토리와 구성된 지식 베이스 디렉토리로 제한됩니다
HTML 살균
사용자 생성 및 가져온 HTML 콘텐츠는 렌더링 전에 살균됩니다:
- 스크립트 태그와 이벤트 핸들러 속성이 제거됩니다
- iframe과 임베디드 객체가 제거됩니다
- URL 스킴이 검증됩니다 (
http:,https:,mailto:만 허용) - 붙여넣기 및 가져온 Markdown 콘텐츠의 안전한 렌더링