"Tauri에서 할 수 있는 제일 위험한 짓은, 권한을 쥔 창을 남의 웹사이트로 돌려놓는 거야."
원격 콘텐츠는 그 창의 권한을 그대로 물려받아
창은 보통 함께 실은 프론트엔드를 불러 — 네가 짜고 믿는 코드지. 창을 바깥 URL(WebviewUrl::External)로 돌려놓는 순간부터는 네가 통제 못 하는 코드를 돌리는 거고, Tauri는 기본적으로 그걸 의심하고 대해. 위험은 창에 capability를 줘놓고 동시에 원격 콘텐츠를 불러오게 두는 데서 터져. 그러면 그 원격 페이지(나 거기 주입된 뭐든)가 네 네이티브 command를 부를 수 있게 되거든. 'capability를 가진 창'이랑 '원격 콘텐츠를 보여주는 창'은 절대 겹치면 안 되는 조합이라고 생각해. 원격 콘텐츠를 꼭 불러야 하면 그 창엔 capability를 최소로, 되도록 0으로 줘.
capability의 remote 컨텍스트
capability는 origin을 알아봐. 자기 permission을 쓸 수 있는 바깥 URL을 적어두는 remote 컨텍스트를 지정할 수 있거든. 기본적으로 네가 준 권한은 로컬 앱 콘텐츠에만 걸리지 아무 원격 origin에나 걸리지 않아. 믿는 원격 origin이 command를 쓰게 해야 할 진짜 이유가 있으면, 대놓고 열어줘 — 그것도 와일드카드가 아니라 정확히 그 origin 하나로 좁혀서. 기본값(로컬만)이 안전한 쪽이고, 넓히는 건 의식하고 내리는 결정이어야 해.
Isolation 패턴: 한 겹 더
보증 수준이 높아야 하는 앱을 위해 Tauri는 isolation 패턴을 준비해뒀어. 네 프론트엔드랑 코어 사이에 앉아서, IPC 메시지가 Rust에 닿기 전에 전부 들여다보는 작고 독립된 샌드박스 앱이야. 여기서 메시지를 검사하거나 걸러낼 수 있어 — 메인 프론트엔드가 뚫려도 마지막으로 한 번 더 거르는 검문소인 셈이지. config에서 보안 패턴을 isolation으로 설정하고 그 디렉터리를 지정하면 켜져. 모든 앱에 필요하진 않은 추가 세팅이지만, 민감한 데이터를 다루는 앱한텐 의미 있는 한 겹이야.