0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

拡張機能でContent-Security-Policyを回避したい (VivaldiでGoogle翻訳を使いたい)

Last updated at Posted at 2021-07-30

動機

  • vivaldi搭載の翻訳では精度が良くないのでGoogle翻訳を使いたい
  • ページにGoogle翻訳スクリプトを埋め込む方式の拡張機能だとGithubなどのページではContent-Security-Policy(CSP)が設定されておりそのスクリプトが実行できない
  • CSPはHTTPヘッダで制御されているのでヘッダを書き換えればCSPは無効化できる
  • ヘッダの書き換えは拡張機能で行える

方法

  • 今回、ヘッダの書き換えは既存の翻訳拡張機能を改造することで行う
  • 改造したい拡張機能のフォルダを「パッケージ化されていない拡張機能を読み込む」で読み込む
  • 下記のように manifest.jsonbackgroundscripts として background.js を指定する permissionswebRequest , webRequestBlocking を追加する
manifest.json
{
// ...
   "background": {
      "scripts": ["background.js"]
   },
// ...
   "permissions": [ "tabs", "http://*/", "https://*/", "contextMenus", "webRequest", "webRequestBlocking" ],
// ...
}
  • background.js にヘッダを削除する js を追記する
background.js
// ...
chrome.webRequest.onHeadersReceived.addListener(function(detail){
	const headers = detail.responseHeaders.filter(e => e.name !== "content-security-policy")
	return {responseHeaders: headers}
}, {urls: ["<all_urls>"]}, ["blocking", "responseHeaders"])
  • このjsでヘッダ内のcontent-security-policyを消して読み込むことができる
  • 2つ目の引数のオブジェクトのプロパティ urls には <all_urls> で全てのページが対象になる
  • これを行うことでXSSなどの攻撃に対するセキュリティレベルが低下するので注意(urlsで都度指定するのが良い)

参考ページ

Chrome 拡張機能で CSP を無視させる

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?