C.W.K.
Stream
Lesson 06 of 06 · published

Isolation 패턴 & 원격 콘텐츠 신뢰

~14 min · tauri, isolation, remote, security

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"Tauri에서 할 수 있는 제일 위험한 짓은 권한 가진 창을 남의 웹사이트로 가리키는 거야."

원격 콘텐츠는 창의 권한을 물려받아

창은 네 번들 프론트엔드를 로드해 — 네가 짜고 믿는 코드. 창을 외부 URL(WebviewUrl::External)로 가리키는 순간, 네가 통제 못 하는 코드를 돌리는 거고, 기본적으로 Tauri는 그걸 의심으로 대해. 위험은 창에 capability를 부여하고 동시에 원격 콘텐츠를 로드하게 두는 거야: 이제 원격 페이지(나 거기 주입된 뭐든)가 네 네이티브 command를 부를 수 있어. 'capability 가진 창'이랑 '원격 콘텐츠 보여주는 창'을 피해야 할 조합으로 대해. 원격 콘텐츠를 꼭 로드해야 하면, 그 창에 절대 최소 capability를 줘 — 이상적으론 0.

capability의 remote 컨텍스트

capability는 origin 인식이야. capability가 자기 permission을 쓸 수 있는 외부 URL을 나열하는 remote 컨텍스트를 지정할 수 있어. 기본적으로 네 부여는 로컬 앱 콘텐츠에 적용되지 임의 원격 origin엔 아냐. 신뢰하는 원격 origin이 command를 쓰게 의도적으로 필요하면, 명시적으로 opt-in 해 — 그리고 와일드카드가 아니라 정확히 한 origin으로 scope해. 기본값(로컬 전용)이 안전한 거고, 넓히는 건 의식적으로 할 결정이야.

Isolation 패턴: 심층 방어

높은 보증이 필요한 앱엔 Tauri가 isolation 패턴을 제공해: 네 프론트엔드랑 코어 사이에 앉아 모든 IPC 메시지가 Rust에 닿기 전에 보는, 작고 별개인 샌드박스 앱. 그걸로 메시지를 검증하거나 sanitize할 수 있어 — 메인 프론트엔드가 뚫려도 마지막 체크포인트야. config에서 보안 패턴을 자기 디렉터리랑 함께 isolation으로 설정해 켜. 항상 필요하진 않은 추가 세팅이지만, 민감 데이터 다루는 앱엔 의미 있는 추가 층이야.

Code

isolation 패턴 켜기·json
// tauri.conf.json — isolation 패턴 opt-in (심층 방어).
// Tauri가 이 디렉터리에서 IPC를 가로채는 샌드박스 앱을 주입해.
{
  "app": {
    "security": {
      "pattern": { "use": "isolation", "options": { "dir": "../isolation-dist" } }
    }
  }
}
원격 origin을 정확히 한 URL로 scope·json
// 신뢰하는 원격 origin '하나'가 좁은 permission을 쓰게 하는 capability.
// 기본은 로컬 전용; 이건 명시적, scope된 opt-in — 절대 "*" 아님.
{
  "identifier": "trusted-remote",
  "windows": ["embed"],
  "remote": { "urls": ["https://trusted.example.com"] },
  "permissions": ["core:event:default"]
}

External links

Exercise

시나리오를 추론해봐: 앱이 서드파티 웹 페이지를 임베드해야 해. 적어봐 (1) 그 창이 가져야 할 capability(힌트: 가능한 한 적게), (2) 메인 창의 capability를 거기 재사용 안 할 이유, (3) isolation 패턴을 더할 만한 이유 하나. 원격 콘텐츠가 원격 침해가 안 되게 지키는 판단을 연습하는 거야.
Hint
임베드 창은 이상적으론 네이티브 permission 0을 가져야 해 — 못 믿으니까. 메인의 capability 재사용은 서드파티한테 네 네이티브 권한을 넘기는 거야. isolation은 뭔가 빠져나가도 IPC를 sanitize할 수 있는 체크포인트를 더해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.