- CLAUDE.md: product principles, crate layering, common commands, commits. - .claude/rules: common, Rust, frontend, Tauri IPC, docs and security rules. - .claude/skills: check, add-tauri-command, project-model-change, change-record, msix-integration-test, backlog-status. Refs #16 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
보안 · 비밀정보 규칙
모든 파일에 적용한다.
커밋 금지 목록
.gitignore에 있는 항목을 예외 없이 지킨다: .mcp.json(Gitea 토큰 포함), .env*, *.pfx, *.p12, *.key, *.isproj.local.json, *.bak, output/samples/, node_modules/, target/. 이 파일들의 내용을 문서·주석·테스트·로그에 복사하지도 않는다.
src/.work/는 로컬 작업 폴더다(미추적). 그 안의 스크립트·토큰·커밋 메타데이터를 소스나 문서에 인용하지 않는다.
시스템 변경 금지
제작기와 테스트는 다음을 절대 자동 수행하지 않는다. 필요한 경우 사용자가 직접 실행할 스크립트와 안내를 출력한다.
- 빌드 PC의 실제 레지스트리 수정(
offreg.dll로 오프라인 hive만 생성) - 인증서 신뢰 저장소 등록(
LocalMachine\TrustedPeople), 인증서 개인 키 내보내기 - MSIX 설치·제거, Windows 개발자 모드 변경
- Windows SDK·인증서·런타임 자동 설치
- 사용자 프로젝트 파일의 자동 변환·일괄 수정
도구 실행
- 허용 도구는 절대 경로의
makeappx.exe,signtool.exe, 저장소 내 PowerShell 서명 스크립트. 파일 이름을 대소문자 무시로 검사하고 실행 전후 SHA-256을 계획 값과 비교한다. - 인자는 배열로 전달한다. 셸(
cmd /c,powershell -Command "<문자열 결합>")로 사용자 입력을 넘기지 않는다. - 자식 프로세스는 Job Object에 붙여 취소·타임아웃 시 함께 종료한다.
경로
- 사용자 입력 경로는
safe_relative로 검사한다:.., 절대 경로, 예약 장치 이름(CON,COM1), 제어 문자,\:<>"|?*거부. - reparse point(심볼릭 링크·junction)는
reject_links로 읽기·쓰기 모두 거부한다. - 소스 폴더가
.work,releases를 포함하거나 그 아래면 거부한다(출력 재수집 방지). - 작업 로그와 검증 JSON에는 로컬 절대 경로가 남는다. 외부 공유 전에 사용자에게 알린다.
프런트엔드
- CSP
default-src 'self'유지. 외부 리소스 로드 금지. - 모든 동적 HTML은 이스케이프. 이벤트는
addEventListener. - Tauri 명령은 ID·선택지만 받고 경로를 받지 않는다. 새 명령마다
capabilities/main.json에 개별 허용을 추가하고 와일드카드 권한을 쓰지 않는다.