Guardium- Password Protector (Day-2)

발행: (2025년 12월 20일 오전 01:41 GMT+9)
13 min read
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the full text you’d like translated (excluding any code blocks or URLs). Could you please provide the content you want converted to Korean?

Overview

manifest.json 파일은 Chrome 확장의 핵심으로, Chrome이 확장을 로드하거나 실행하기 전에 읽는 주요 메타데이터 및 구성 파일입니다. 이 파일은 확장의 정체성—이름, 버전, 설명, 작성자, 아이콘 등을 정의하고, 브라우저 내에서 확장이 어떻게 동작하는지를 명확히 지정합니다. 매니페스트를 통해 개발자는 권한을 선언하여 확장이 접근할 수 있는 브라우저 API와 웹사이트를 제어함으로써 보안과 사용자 투명성을 보장합니다. 또한 백그라운드 서비스 워커, 콘텐츠 스크립트, 팝업, 옵션 페이지, 웹 접근 가능한 리소스와 같은 확장의 주요 구성 요소들을 연결하여 Chrome이 각 부분을 언제, 어디서 실행해야 하는지 알 수 있게 합니다.

**Manifest Version 3 (MV3)**에서는 manifest.json비영구적인 백그라운드 실행, stricter permission handling, 향상된 성능과 같은 최신 보안 관행을 강제함으로써 더욱 중요한 역할을 합니다. 따라서 안전하고 효율적이며 유지 관리가 용이한 Chrome 확장을 만들기 위해서는 이 파일이 필수적입니다.

예시 manifest.json

{
  "manifest_version": 3,
  "name": "Guardium",
  "short_name": "Guardium",
  "description": "A secure browser-based password manager with autofill support",
  "version": "1.0.0",

  "action": {
    "default_title": "Open Guardium",
    "default_popup": "index.html"
  },

  "icons": {
    "16": "assets/icons/icon16.png",
    "32": "assets/icons/icon32.png",
    "48": "assets/icons/icon48.png",
    "128": "assets/icons/icon128.png"
  },

  "background": {
    "service_worker": "background.js",
    "type": "module"
  },

  "content_scripts": [
    {
      "matches": [""],
      "js": ["contentScript.js"],
      "run_at": "document_end",
      "all_frames": true
    }
  ],

  "permissions": [
    "activeTab",
    "tabs",
    "storage",
    "scripting",
    "alarms",
    "notifications"
  ],

  "host_permissions": [
    ""
  ],

  "web_accessible_resources": [
    {
      "resources": [
        "assets/icons/*",
        "injected/*.js"
      ],
      "matches": [""]
    }
  ],

  "options_page": "options.html",

  "commands": {
    "open-guardium": {
      "suggested_key": {
        "default": "Ctrl+Shift+G",
        "mac": "Command+Shift+G"
      },
      "description": "Open Guardium popup"
    }
  },

  "minimum_chrome_version": "114"
}

모든 라인 설명

Line (excerpt)Explanation
"manifest_version": 3,Manifest Version – MV3, 최신 Chrome 확장 프로그램 표준을 지정합니다.
Benefits:
• 향상된 보안
• 백그라운드 페이지 대신 서비스 워커 사용
• 더 엄격한 권한 제어
"name": "Guardium",Extension Name – 확장 프로그램 페이지, Chrome 웹 스토어, 툴바에 표시되는 전체 이름입니다.
"short_name": "Guardium",Short Name – 공간이 제한된 곳(예: 툴바 라벨)에서 사용됩니다. UI 일관성을 위해 권장됩니다.
"description": "A secure browser-based password manager with autofill support",Description – Chrome 웹 스토어와 확장 프로그램 페이지에 표시되는 간단한 요약입니다.
"version": "1.0.0",Version Number – Chrome이 업데이트를 관리하는 데 사용됩니다. 의미 체계 버전(major.minor.patch)을 따라야 합니다.
"action": { … }Toolbar Action (Popup UI) – 확장 프로그램 툴바 아이콘의 동작을 정의합니다.
"default_title": "Open Guardium",사용자가 아이콘 위에 마우스를 올렸을 때 표시되는 툴팁 텍스트입니다.
"default_popup": "index.html"아이콘을 클릭했을 때 열리는 HTML 파일(비밀번호 관리자 UI)입니다.
"icons": { … }Icons – 다양한 크기의 확장 프로그램 아이콘을 선언합니다.
"16": "assets/icons/icon16.png",툴바에 사용됩니다.
"32": "assets/icons/icon32.png",고해상도 디스플레이 및 시스템 UI에 사용됩니다.
"48": "assets/icons/icon48.png",Chrome 확장 프로그램 페이지에 사용됩니다.
"128": "assets/icons/icon128.png"Chrome 웹 스토어 목록에 사용됩니다.
"background": { … }Background Service Worker – 확장 프로그램의 백그라운드 로직을 정의합니다.
"service_worker": "background.js",이벤트를 처리하고, 메시지를 수신하며, 알람, 인증, 암호화 등을 관리하는 JavaScript 파일입니다. 필요할 때만 실행됩니다(비영구적).
"type": "module"ES 모듈을 활성화하여 import/export를 사용할 수 있게 하여 보다 깔끔하고 확장 가능한 구조를 제공합니다.
"content_scripts": [ … ]Content Scripts – 웹 페이지에 삽입되는 스크립트를 선언합니다.
"matches": [""],모든 웹사이트에 스크립트를 삽입합니다(비밀번호 관리자가 로그인 폼을 감지하려면 필요).
"js": ["contentScript.js"],페이지 컨텍스트에서 실행되는 스크립트 파일입니다.
"run_at": "document_end",DOM이 완전히 파싱된 후에 실행됩니다.
"all_frames": true모든 프레임(iframe 포함)에서 실행됩니다.
"permissions": [ … ]Permissions – 확장 프로그램이 사용할 수 있는 Chrome API를 선언합니다.
"host_permissions": [ "" ]콘텐츠 스크립트 삽입 및 네트워크 요청에 필요한 호스트 권한입니다.
"web_accessible_resources": [ { … } ]웹 페이지가 접근할 수 있는 리소스(예: 아이콘, 삽입된 스크립트)입니다.
"options_page": "options.html"사용자가 확장 프로그램 페이지에서 **“Details → Options”**를 클릭했을 때 표시되는 옵션 페이지입니다.
"commands": { … }확장 프로그램 동작을 위한 키보드 단축키입니다.
"minimum_chrome_version": "114"Chrome 114 이상에서만 확장 프로그램이 실행되도록 보장합니다(MV3의 일부 기능에 필요).

정리된 매니페스트 개요

아래는 제공해 주신 manifest.json 조각을 깔끔하게 정리한 복사‑가능 버전입니다. 모든 제목, 코드 블록, 설명 노트는 그대로 유지하고, 반복되는 자리표시자는 제거했습니다.

1️⃣ Content Scripts

{
  "js": ["contentScript.js"],
  "run_at": "document_end",
  "all_frames": true
}
  • js – 일치하는 페이지에 삽입되는 JavaScript 파일.
  • run_at – DOM이 로드된 후 스크립트가 실행되어 폼과 입력 요소가 존재함을 보장합니다.
  • all_frames – 메인 페이지 모든 iframe에서 실행됩니다 (내장 로그인 폼에 중요).

2️⃣ Permissions

[
  "activeTab",
  "tabs",
  "storage",
  "scripting",
  "alarms",
  "notifications"
]
Permission기능 설명
activeTab현재 활성 탭에 대한 일시적인 접근 권한.
tabs탭 메타데이터(URL, ID, 제목) 읽기를 허용.
storage암호화된 비밀번호 저장을 위한 chrome.storage 사용 가능.
scripting동적 스크립트 삽입을 허용(MV3에 필요).
alarms예약된 백그라운드 작업을 활성화.
notifications사용자 알림 허용(예: “비밀번호가 저장되었습니다”).

3️⃣ Host Permissions

[
  ""
]
  • 확장 프로그램이 접근할 수 있는 웹사이트를 지정합니다.
  • ""모든 사이트와 상호작용할 수 있는 권한을 부여합니다 – 자동 입력 확장 프로그램에 필요합니다.

4️⃣ Web‑Accessible Resources

[
  {
    "resources": [
      "assets/icons/*",
      "injected/*.js"
    ],
    "matches": [""]
  }
]
  • 웹 페이지나 콘텐츠 스크립트가 확장 프로그램에 포함된 파일을 로드할 수 있도록 허용합니다.
  • resources – 외부에서 접근 가능한 파일들.
  • matches – 해당 리소스를 요청할 수 있는 웹사이트 목록.

5️⃣ Options Page

"options_page": "options.html"
  • 확장 프로그램의 설정 페이지.
  • 기본 설정, 보안 옵션, 동기화 옵션 등을 관리하는 데 사용됩니다.

6️⃣ Keyboard Commands

{
  "open-guardium": {
    "suggested_key": {
      "default": "Ctrl+Shift+G",
      "mac": "Command+Shift+G"
    },
    "description": "Open Guardium popup"
  }
}
  • Guardium 팝업을 여는 단축키를 정의합니다.
  • 플랫폼별 키(default는 Windows/Linux, mac은 macOS용).

7️⃣ Chrome Version Requirement

"minimum_chrome_version": "114"
  • 확장 프로그램이 사용하는 MV3 API와 호환되는 Chrome 버전을 보장합니다.

✅ Final Summary

  • 완전한 MV3‑준수 manifest.json.
  • 비밀번호 관리 및 자동 입력을 지원합니다.
  • Chrome 웹 스토어 제출 준비 완료.
  • UI, 백그라운드, 콘텐츠 스크립트, 권한 및 보안을 포함합니다.

📦 Chrome Extension Working – Overview

확장 프로그램 UI 스크린샷

Chrome 확장 프로그램은 메시지 전달을 통해 통신하는 격리된 구성 요소들로 나뉩니다:

ComponentRole
Popup UI사용자가 확장 아이콘을 클릭했을 때 실행되며, 사용자 상호작용 및 표시를 담당합니다.
Background Service Worker“두뇌” 역할 – 이벤트에 반응하고, 저장소를 관리하며, 보안 로직을 수행합니다; 필요할 때만 실행됩니다.
Content Scripts웹 페이지에 삽입되어 페이지의 DOM과 상호작용합니다(예: 폼 감지, 자동 입력). 보안을 위해 격리된 상태를 유지합니다.
Options Page환경설정, 보안 및 동기화 등을 위한 설정 인터페이스를 제공합니다.
Web‑Accessible Resources웹 페이지나 콘텐츠 스크립트가 요청할 수 있는 파일들(아이콘, 삽입 스크립트 등)입니다.

이 모든 구성 요소는 manifest.json에 선언되며, Chrome은 시작 시 이를 읽어 필요한 권한, 표시할 UI 요소, 삽입할 스크립트를 파악합니다.

📊 아키텍처 다이어그램

Extension architecture diagram

다이어그램은 UI 컴포넌트, 콘텐츠 스크립트, 그리고 백그라운드 서비스 워커가 Chrome 내부(확장 프로그램 샌드박스)와 외부(웹 페이지)에서 어떻게 상호 작용하는지를 보여줍니다.

JSON 스니펫을 manifest.json 파일에 직접 복사하고, 프로젝트 구조에 맞게 경로나 키를 조정하면 Guardium 비밀번호 관리자 확장 프로그램용으로 깔끔하고 프로덕션 준비가 된 매니페스트를 얻을 수 있습니다.

**Chrome Extension Architecture Overview**

The **background service worker** acts as the central controller: it handles logic, storage, alarms, notifications, and communication. All these parts communicate using **message passing (`runtime.message`)**.  

The background can also access **Chrome data and APIs** (storage, cookies, history, bookmarks) and can communicate with **external APIs** outside Chrome.  

Overall, the diagram highlights the **separation of concerns, security isolation, and message‑based communication** that make Chrome extensions safe and efficient.
Back to Blog

관련 글

더 보기 »