"permission은 문을 열어줘. scope는 들어온 사람이 집 안 어디까지 들어갈 수 있는지를 정하고."
permission만으론 왜 부족한가
fs:allow-read-text-file을 허락한다는 건 '이 앱은 텍스트 파일을 읽을 수 있다'는 말이야 — 근데 어떤 파일? scope가 없으면 사용자 디스크 전체를 뜻할 수도 있어. scope가 permission을 특정 경로(파일시스템)나 특정 URL(네트워크)로 좁혀줘. '파일을 읽을 수 있다'랑 '앱 자기 데이터 폴더 안 파일을 읽을 수 있다'의 차이야. 디스크나 네트워크를 만지는 것이라면, 진짜 안전은 scope에 살아.
변수를 쓰는 경로 scope
파일시스템 scope는 경로 패턴을 쓰고, Tauri가 변수를 줘서 절대 경로를 박아 넣지 않아도 돼. $APPDATA, $APPCONFIG, $HOME, $RESOURCE 같은 것들. permission을 allow(원하면 deny까지) 경로 패턴을 가진 객체로 적어. $APPDATA/** 같은 glob은 '앱 데이터 디렉터리 아래 전부'를 뜻하고. 민감한 하위 폴더에 deny를 같이 걸면, 앱이 만져야 할 영역에만 딱 울타리를 친 거야.
최소 권한을 설정으로 굳히기
scope가 최소 권한을 구호에서 설정으로 바꾸는 방법이야. 기능이 $APPDATA에만 쓰는데 $HOME/**을 열어주지 마. API 호스트 하나만 부르는데 https://**를 허용하지 마. 범위를 넓히는 와일드카드 하나하나가 뚫린 프론트엔드가 파고들 공격면이야. 기능이 돌아갈 제일 좁은 scope가 언제나 정답이고 — 어쩔 수 없이 넓게 열어야 할 땐 deny 패턴으로 정확한 구멍을 뚫으면 돼.