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
[1] Chrome Extensions - Security