사용자 개인 정보 보호

사용자는 확장 프로그램이 개인 정보를 침해하거나 필요한 추가 권한을 요청하는 경우 해당 확장 프로그램을 설치하지 않습니다. 권한 요청은 사용자가 이해할 수 있어야 하며 확장 프로그램을 구현하는 데 필요한 중요한 정보로 제한되어야 합니다. 사용자 데이터를 수집하거나 전송하는 확장 프로그램은 사용자 개인 정보 보호의 정책을 준수해야 합니다.

신원을 안전하게 보호하기 위해 다음 예방 조치를 포함하여 확장 프로그램 사용자를 보호하고 존중합니다.

필수 권한 줄이기

확장 프로그램이 액세스할 수 있는 API는 매니페스트permissions 필드에 지정됩니다. 부여되는 권한이 많을수록 공격자가 정보를 가로챌 수 있는 경로가 많아집니다. 확장 프로그램이 사용하는 API만 나열해야 하며, 침습이 적은 옵션을 고려해야 합니다. 확장 프로그램에서 요청하는 권한이 적을수록 사용자에게 표시되는 권한 경고가 줄어듭니다. 사용자는 경고가 제한적인 확장 프로그램을 설치할 가능성이 높습니다.

확장 프로그램은 현재 필요하지 않지만 향후 구현할 수 있는 권한을 요청하여 사용자 데이터에 대한 '미래에도' 액세스할 수 없어야 합니다. 확장 프로그램 업데이트 시 새로운 권한을 포함하고 선택사항으로 만드는 것이 좋습니다.

activeTab

호스트 권한을 사용하여 스크립트를 삽입하는 확장 프로그램은 대개 activeTab를 대신 사용할 수 있습니다. activeTab 권한은 사용자가 확장 프로그램을 호출할 때만 확장 프로그램에 현재 활성 상태인 탭에 대한 임시 액세스 권한을 부여합니다. 사용자가 현재 탭에서 벗어나거나 현재 탭을 닫으면 액세스가 차단됩니다. 여러 <all_urls> 사용의 대안으로 사용됩니다.

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

설치 중에 activeTab 권한으로 경고 메시지가 표시되지 않음

선택적 권한 선택

선택적 권한을 포함하여 사용자가 확장 프로그램에서 필요한 기능과 권한을 선택할 수 있도록 합니다. 기능이 확장 프로그램의 핵심 기능에 꼭 필요하지 않은 경우 선택사항으로 지정하고 API 또는 도메인을 optional_permissions 필드로 이동합니다.

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

선택적 권한을 포함하면 사용자가 관련 기능을 사용 설정할 때 확장 프로그램에서 특정 권한이 필요한 이유를 설명할 수 있습니다. 확장 프로그램은 사용자에게 기능을 사용 설정하는 옵션을 제공할 수 있습니다.

권한 사용 설정을 요청하는 팝업 스크린샷

확인을 클릭하면 서비스 워커에서 다음 이벤트가 트리거됩니다.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

그러면 사용자에게 다음 요청이 표시됩니다.

선택적 권한 요청의 스크린샷

선택적 권한은 확장 프로그램 업데이트에서 구현할 수도 있습니다. 이렇게 하면 필요한 새 권한으로 업데이트하는 경우와 같이 확장 프로그램을 사용 중지하지 않고도 사용자가 새 기능을 사용할 수 있습니다.

사용자 정보 제한 및 보안

확장 프로그램에 필요한 최소량의 데이터만 요청하세요. 확장 프로그램이 사용자에게 요청하는 정보가 적을수록 확장 프로그램의 보안이 침해될 경우 노출도가 낮아집니다.

요청된 모든 사용자 데이터는 주의해서 처리해야 합니다. 등록된 도메인이 있는 보안 서버에서 데이터를 저장하고 검색합니다. 항상 HTTPS를 사용하여 연결하고 확장 프로그램 저장소가 암호화되지 않으므로 민감한 사용자 데이터를 확장 프로그램의 클라이언트 측에 보관하지 마세요.

데이터 및 시크릿 모드 저장

확장 프로그램은 storage API를 사용하거나 데이터 저장을 유도하는 서버 요청을 실행하여 데이터를 저장할 수 있습니다. 확장 프로그램에서 항목을 저장해야 하는 경우 먼저 시크릿 창에서 생성된 것인지 고려하세요. 기본적으로 확장 프로그램은 시크릿 창에서 실행되지 않습니다.

시크릿 모드는 창에 흔적을 남기지 않습니다. 시크릿 창의 데이터를 처리할 때 확장 프로그램은 이 약속을 준수해야 합니다. 확장 프로그램이 일반적으로 방문 기록을 저장하는 경우 시크릿 창의 방문 기록을 저장하지 마세요. 그러나 확장 프로그램은 시크릿 모드 여부에 관계없이 모든 창에서 설정 환경설정을 저장할 수 있습니다.

창이 시크릿 모드인지 감지하려면 관련 tabs.Tab 또는 windows.Window 객체의 incognito 속성을 확인합니다.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}