7.2 セキュリティ対策

Security Best Practices

最小権限の原則

  • 必要な権限のみ要求
  • <all_urls>は避ける
  • optional_permissionsを活用
  • activeTabで一時的アクセス
// NG: 過剰な権限
"host_permissions": [""]

// OK: 必要なドメインのみ
"host_permissions": ["https://api.example.com/*"]

コンテンツセキュリティポリシー

Manifest V3ではCSPが自動適用される。

  • インラインスクリプト禁止
  • eval()禁止
  • リモートコード読み込み禁止
// NG: インラインスクリプト
<button onclick="doSomething()">

// OK: 外部スクリプトでイベント登録
document.getElementById('btn').addEventListener('click', doSomething);

XSS対策

// NG: innerHTMLで直接挿入
element.innerHTML = userInput;

// OK: テキストとして挿入
element.textContent = userInput;

// OK: DOMPurifyでサニタイズ
element.innerHTML = DOMPurify.sanitize(userInput);

データの安全な保存

  • 機密情報はchrome.storage.localに保存
  • パスワードは保存しない(OAuth等を使用)
  • APIキーはサーバー側で管理
注意chrome.storageの内容はDevToolsで確認可能。暗号化が必要な場合は検討。
参考文献
[1] Chrome Extensions - Security