댓글 검색 목록

[html] chrome extention - 8. 권한 선언 및 사용자에게 경고

페이지 정보

작성자 운영자 작성일 20-11-02 16:48 조회 784 댓글 0

웹 사이트 및 대부분의 Chrome API에 액세스하는 확장 프로그램의 기능은 선언 된 권한에 따라 결정됩니다. 권한은 기능에 필요한 것만으로 제한되어야 합니다. 

권한을 제한하면 확장 프로그램의 기능이 설정되고 확장 프로그램이 공격자에 의해 손상 될 경우 데이터에 대한 침입 가능성이 줄어 듭니다. 명시 적, 최소 및 선택적 권한을 구현하여 확장 프로그램과 사용자를 보호합니다.


권한 구성 


권한은 Chrome API를 참조하거나 하나 이상의 호스트에 대한 액세스 권한을 부여하는 일치 패턴을 참조하는 알려진 문자열입니다. 매니페스트에 나열되고 필수 권한 또는 선택적 권한으로 지정됩니다.


  {
    "name": "Permissions Extension",
    ...
    // required permissions
    "permissions": [
      "activeTab",
      "contextMenus",
      "storage"
    ],
    // optional permissions
    "optional_permissions": [
      "topSites",
      "http://www.developer.chrome.com/*"
    ],
        ...
    "manifest_version": 2
  }

확장 프로그램의 핵심 기능에 필요한 권한으로 만 필요한 권한을 제한합니다. 확장 프로그램은 현재 필요한 것보다 더 많은 권한을 요청해서는 안됩니다. 업데이트에 필요할 수 있는 권한을 요청하여 미래를 증명하지 마십시오.


선택적 기능에 필요한 권한은 선택적 권한으로 등록해야 합니다. 이를 통해 사용자는 확장 기능을 제공 할 수 있는 액세스 권한과 원하는 기능을 결정할 수 있습니다.


필요한 권한 식별 


간단한 확장은 여러 권한을 요청해야 할 수 있으며 많은 권한은 설치시 경고를 표시합니다. 사용자는 제한된 경고가 있거나 권한이 설명 된 확장 프로그램을 신뢰할 가능성이 더 높습니다.

Extension permission warnings on installation 


확장 프로그램의 핵심 기능과 필요한 권한을 식별합니다. 경고와 함께 권한이 필요한 경우 기능을 선택적으로 만드는 것을 고려하십시오.


이벤트로 선택적 권한 트리거 


선택적 권한 샘플 확장의 핵심 기능은 새 탭 페이지를 재정의합니다. 한 가지 기능은 사용자의 오늘의 목표를 표시하는 것입니다. 이 기능은 경고를 포함하지 않는 스토리지 권한 만 필요합니다.

Extension button that enables additional features 

확장에는 추가 기능이 있습니다. 사용자의 상위 사이트를 표시합니다. 이 기능에는 경고가 있는 topSites 권한이 필요합니다.


Extension warning for topSites API 


선택 사항으로 경고와 함께 권한에 의존하는 기능을 개발하고 이러한 기능을 유기적으로 도입하면 위험 부담 없이 확장 프로그램을 도입 할 수 있습니다. 또한 이를 통해 사용자는 확장 기능을 사용하여 자신의 경험을 추가로 사용자 정의하고 경고를 설명 할 기회를 만들 수 있습니다.


activeTab 권한 대체 


activeTab 권한은 사용자가 있는 사이트에 대한 임시 액세스 권한을 부여하고 확장 프로그램이 현재 탭에서 ""권한을 사용할 수 있도록 합니다. 대부분의 경우 "<all_urls>"의 필요성을 대체하고 설치시 경고를 표시하지 않습니다.


Sample of the tabs permission warningNo permission warning for activeTab 


activeTab 권한은 사용자가 확장을 호출 할 때 현재 활성 탭에 대한 확장 임시 액세스 권한을 부여합니다. 확장이 손상되면 공격자는 액세스를 얻기 전에 사용자가 확장을 호출 할 때까지 기다려야 하며 해당 액세스는 탭을 탐색하거나 닫을 때까지만 지속됩니다.


탭에 대해 activeTab 권한이 활성화되어있는 동안 확장 프로그램은 다음을 수행 할 수 있습니다.

  • 해당 탭에서 tabs.executeScript 또는 tabs.insertCSS를 호출합니다.
  • tabs.Tab 객체를 반환하는 API를 통해 해당 탭의 URL, 제목 및 파비콘을 가져옵니다.
  • webRequest API를 사용하여 탭의 기본 프레임 오리진에 대한 탭의 네트워크 요청을 가로 챕니다. 확장 프로그램은 일시적으로 탭의 기본 프레임 원본에 대한 호스트 권한을 얻습니다.

다음 사용자 제스처는 activeTab을 활성화합니다.

액세스 허용 


확장 프로그램이 file : // URL에 액세스하거나 시크릿 모드에서 작동해야 하는 경우 사용자는 chrome : // extensions의 확장 프로그램 세부 정보 페이지에서 해당 기능에 대한 액세스를 허용해야 합니다.

Allow file urls and incognito mode on the extension detial page 


확장 프로그램은 extension.isAllowedIncognitoAccess()를 호출하여 시크릿 모드에서 사용 설정되었는지 감지하거나 extension.isAllowedFileSchemeAccess()를 사용하여 file : // URL에서 실행할 수 있습니다.


권한 이해 


API에서 확장 사용자에게 부여한 기능을 설명하기 위한 권한 경고가 있지만 이러한 경고 중 일부는 처음에는 명확하지 않을 수 있습니다. 예를 들어 ""권한을 추가하면 겉보기에는 관련이 없는 경고가 표시됩니다. 확장 프로그램이 탐색 활동을 읽을 수 있습니다. chrome.tabs API는 새 탭을 여는 데만 사용할 수 있지만 tabs.Tab 개체를 사용하여 새로 열린 모든 탭과 연결된 URL을 확인하는데도 사용할 수 있습니다.


가능한 경우 선택적 권한 또는 덜 강력한 API를 구현하여 경고 경고를 피하십시오.


경고보기 


확장자가 압축 해제 된 파일로 로드 되면 권한 경고가 표시되지 않습니다. 확장 프로그램의 권한 경고를 보려면 chrome : // extensions로 이동하여 개발자 모드가 사용 설정되어 있는지 확인하고 PACK EXTENSION을 클릭하세요.

Developer Mode is Checked then Click Pack Extension 

확장 루트 디렉토리 필드에 확장의 폴더 경로를 지정한 다음 확장팩 버튼을 클릭합니다. 최초 패키지의 경우 개인 키 필드를 무시하십시오.


Specify Extension Path then Click Pack Extension 


Chrome은 확장 프로그램의 비공개 키를 포함하는 .crx 파일과 .pem 파일의 두 파일을 생성합니다.


Packaged Extension Files 


개인 키를 분실하지 마십시오! .pem 파일을 비밀스럽고 안전한 장소에 보관하십시오. 확장을 업데이트하는 데 필요합니다.


.crx 파일을 Chrome 확장 프로그램의 관리 페이지에 드롭하여 설치합니다.

Drop File to Install 


.crx 파일을 삭제 한 후 브라우저는 확장자를 추가 할 수 있는지 묻고 경고를 표시합니다.

Warning for New Tab Extension 


경고가 있는 권한 


참고 : 권한 테이블은 최선을 다해 업데이트 되며 현재 경고와 약간의 불일치가 있을 수 있습니다. 또한 일부 권한은 다른 권한과 페어링 될 때 경고를 표시하지 않을 수 있습니다. 예를 들어 확장 프로그램이 "<all_urls>"도 요청하면 "tabs"경고가 표시되지 않습니다. 확장 권한에 대해 표시된 최신 경고를 확인하려면 경고 보기의 단계를 따르십시오.


 Permission

 Description

 Warning

 모든 호스트에 대한 확장 액세스 권한을 부여합니다. activeTab 권한을 사용하여 호스트 권한 선언을 피할 수 있습니다.

 방문하는 웹 사이트의 모든 데이터를 읽고 변경합니다.

 "https://HostName.com/"

 "https://HostName.com/"에 대한 확장 액세스 권한을 부여합니다. activeTab 권한을 사용하여 호스트 권한 선언을 피할 수 있습니다.

 HostName.com에서 데이터 읽기 및 변경

 "bookmarks"

 확장 프로그램에 chrome.bookmarks API에 대한 액세스 권한을 부여합니다.

 북마크 읽기 및 변경

 "clipboardRead"

 확장에서 document.execCommand ( 'paste')를 사용하는 경우 필요합니다.

 복사하여 붙여 넣은 데이터 읽기

 "clipboardWrite"

 확장이 document.execCommand ( 'copy') 또는 document.execCommand ( 'cut')를 사용함을 나타냅니다.

 복사하여 붙여 넣은 데이터 수정

 "contentSettings"

 확장 프로그램에 chrome.contentSettings API에 대한 액세스 권한을 부여합니다.

 쿠키, 자바 스크립트, 플러그인, 지리적 위치, 마이크, 카메라 등과 같은 기능에 대한 웹 사이트의 액세스를 제어하는 ​​설정을 변경합니다.

 "debugger"

 확장 프로그램에 chrome.debugger API에 대한 액세스 권한을 부여합니다.

  • 페이지 디버거 백엔드에 액세스
  • 방문하는 웹 사이트의 모든 데이터를 읽고 변경합니다.

 "declarativeNetRequest"

 확장 프로그램에 chrome.declarativeNetRequest API에 대한 액세스 권한을 부여합니다.

 페이지 콘텐츠 차단

 "desktopCapture"

 확장 프로그램에 chrome.desktopCapture API에 대한 액세스 권한을 부여합니다.

 화면 내용 캡처

 "downloads"

 확장 프로그램에 chrome.downloads API에 대한 액세스 권한을 부여합니다.

 다운로드 관리

 "geolocation"

 확장 프로그램이 사용자에게 권한을 요청하지 않고 HTML5 Geolocation API를 사용할 수 있도록 허용합니다.

 물리적 위치 감지

 "history"

 확장 프로그램에 chrome.history API에 대한 액세스 권한을 부여합니다.

 인터넷 사용 기록을 읽고 변경

 "management"

 chrome.management API에 대한 확장 액세스 권한을 부여합니다.

 앱, 확장 프로그램 및 테마 관리

 "nativeMessaging"

 기본 메시징 API에 대한 확장 액세스 권한을 제공합니다.

 협력하는 기본 애플리케이션과 통신

 "notifications"

 확장 프로그램에 chrome.notifications API에 대한 액세스 권한을 부여합니다.

 알림 표시

 "pageCapture"

 확장 프로그램에 chrome.pageCapture API에 대한 액세스 권한을 부여합니다.

 방문하는 웹 사이트의 모든 데이터를 읽고 변경합니다.

 "privacy"

 확장 프로그램에 chrome.privacy API에 대한 액세스 권한을 부여합니다.

 개인 정보 관련 설정 변경

 "proxy"

 확장 프로그램에 chrome.proxy API에 대한 액세스 권한을 부여합니다.

 방문하는 웹 사이트의 모든 데이터를 읽고 변경합니다.

 "system.storage"

 확장 프로그램에 chrome.system.storage API에 대한 액세스 권한을 부여합니다.

 저장 장치 식별 및 꺼내기

 "tabCapture" 확장 프로그램에 chrome.tabCapture API에 대한 액세스 권한을 부여합니다. 방문하는 웹 사이트의 모든 데이터를 읽고 변경합니다.
 "tabs" chrome.tabschrome.windows를 비롯한 여러 API에서 사용하는 Tab 개체의 권한 있는 필드에 대한 확장 액세스 권한을 부여합니다. 대부분의 경우 확장 프로그램은 이러한 API를 사용하기 위해 "탭"권한을 선언 할 필요가 없습니다. 검색 기록 읽기
 "topSites" 확장 프로그램에 chrome.topSites API에 대한 액세스 권한을 부여합니다. 가장 자주 방문한 웹 사이트 목록 읽기
 "ttsEngine" chrome.ttsEngine API에 대한 확장 액세스 권한을 부여합니다. 합성 된 음성을 사용하여 말한 모든 텍스트 읽기
 "webNavigation" 확장 프로그램에 chrome.webNavigation API에 대한 액세스 권한을 부여합니다. 검색 기록 읽기


권한 업데이트 


추가 권한으로 확장 프로그램을 업데이트하면 일시적으로 비활성화 될 수 있습니다. 사용자는 새로운 경고에 동의 한 후 다시 활성화해야 합니다.


사용자가 이제 권한이 포함 된 확장 프로그램을 수동으로 업데이트하면 관리 페이지에 경고가 표시됩니다.


Adding tabs Permission 


확장 프로그램이 자동으로 업데이트 되면 사용자가 새 권한에 동의 할 때까지 사용할 수 없습니다.

Extension has been disabled 

Agree to permissions 


새 기능을 선택 사항으로 만들고 매니페스트optional_permissions에 새 권한 업데이트를 추가하여 이를 방지 할 수 있습니다.


댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.