Choose your language: English, 日本語(Japanese). Or use the Google translation:

これは何?

Mozilla Firefox 用のアドオン。PP Interrupter は、プライバシーを守る(Protect Privacy)のために、特定の URL への遷移を中断する。

このアドオンは、特定の URL へのアクセスを一旦ブロックし、アドレスバーに表示されるアイコンのクリックによってそのブロックを解除するという汎用のアドオンである。このアドオンにより、自動的なリダイレクトの前に一旦ストップする習慣を作ることができる。このアドオンは、他のブロッカーと違い、悪意のあるサイトではなく、健全なサイトをブロックすることを目的とする。

なお、万一、一旦ブロックしたページに行かないことに決めた場合は、ブラウザの「中止」ボタンを押せば、キャンセルできる。

どこで手に入れられる?

AMO (Mozilla Add-ons) のページにて。

ブラウザの拡張機能の標準である Web Extension 規格に順って作ったが、使えるブラウザは今のところ Firefox に限られるようだ。

なぜ必要なの?

いつも使っているサイトが突然、悪意を持って認証局の情報を盗もうとするかもしれない。プライバシーを盗み見ようとするかもしれない。

本当にやりたいのは、悪意のあるサイトへの自動的なリダイレクトを禁止することである。しかし、悪意のあるサイトへ導かれるかどうかは判定が難しい。そこで、逆転の発想で、判定が容易な健全なサイト(認証局)へのアクセスを一旦ブロックすることを習慣化し、ブロックがあるはずなのにないことによって、詐欺サイトに導かれたことを検知するようにするのだ。

PP Interrupter はそのような目的で使うことができる。

実装上の困難があり、PP Interrupter は自動的なリダイレクトだけでなく認証局へのアクセスをすべて一旦ブロックしてしまう。ただし、認証局の URL から同じ URL への遷移についてはブロックしないようにしている。また、PP Authorizer などを使ったアクセスをブロックしないようアドオン(extension)を登録することができるようになっているが、後述のように、アドオンの側で PP Interrupter に対応している必要がある。

インストール

インストールするには、上記の AMO から Firefox にダウンロードした上で、アドオンの設定画面で、ブロックするサイトを登録する必要がある。New Authority ボタンを押して、識別名と URL を入力し Save する。PP Authorizer をすでにインストールしていて、そこに登録した認証局(Authorities)をブロックする場合は、Add from PP Authorizer ボタンを押せばよい。

ここで登録した URL がチェックされるときは、基本的には前方一致であるが、続く文字は / か ? か & でなければならない。例えば、URL が https://example.com/oauth であったときは、https://example.com/oauth/XXXX や https://example.com/oauth?XXX=XXX に一致する。

PP Authorizer は PP Interrupter の姉妹品で、Privacy-Protected なログインまたは支払いを実現するための構成要素の一つである。PP Authorizer は、"A" タグや "INPUT hidden" タグで "pp-authorizer" クラスを持つものをチェックし、そのタグが示すリンクに遷移するよう促すものである。例えば OAuth の途中でそれを使うとよりセキュアになると著者は考えている。

PP Interrupter は、デフォルトで PP Authorizer を使ったアクセスをブロックしないようにしている。もし、間違って Allowing Extensions の PP Authorizer を消してしまったならば、Add from PP Authorizer ボタンを押すか、New Extension ボタンを押して、次の内容を入力して Save しておいて欲しい。

name:         PP Authorizer
extension ID: {783dadb1-a4ec-46e7-a6de-26432b3393c2}

PP Interrupter を使わなくても、認証の前に PP Authorizer を使うべきページでストップする世の中に将来なるほうがよい。PP Interrupter は現実への対応だが、PP Authorizer は未来への投資である。しかし、PP Interupter は汎用のため、PP Authorizer がなくても、PP Interrupter は動く。

他のアドオンの登録

他のアドオンが PP Interrupter にブロックされないようにするには、設定画面で New Extension ボタンで識別名と extension ID を登録する以外に、他のアドオンの側で特別なことをする必要がある。この先は、プログラミングに関する事項なので、一般ユーザーはこの項を読む必要はない。

他のアドオンは、あるタブの次の URL へのアクセスをブロックしないように PP Interrupter に申請できる。アドオンの中で次のようにプログラムする。変数 tabId にタブの id が入っていて、変数 url に行きたい URL が入っているとする。

...

const PP_INTERRUPTER_ID = "{c35621af-46f1-4338-a8b6-c26bba37fb98}";

browser.runtime.sendMessage(PP_INTERRUPTER_ID, {
  type: "permit",
  tabId: tabId,
  url: url
}).then(x => {
  browser.tabs.update(tabId, {url: url});
}).catch(e => {
  browser.tabs.update(tabId, {url: url});
});

...

sendMessage で許可を申請し、許可が得られたら x に true が入る。browser.tabs.update で実際のページ遷移をする。PP Interrupter がない場合でもページ遷移するよう上ではプログラムしている。

このアドオンはやや実験的

このアドオンはできたばかりで、やや実験的である。しかし、できた当初から汎用に使えるようにしており、PP Authorizer に比べればより実用的になっているはずである。使っていただけるとありがたい。

作者自身は認証局への自動リダイレクトをするようなサイトにお世話になっていないため、このアドオンを実験する機会にめぐまれていない。そのため、このアドオンの更新は滞りがちになると予想される。許していただきたい。

ご意見・ご要望は、作者のブログの一ページで受け付けている。日本語のサイトだが、英語でコメントを寄せていただいてもかまわない。なにぶん、個人のサイトなので致らないところは多々あると思う。ご寛恕いただければと思う。

(なお、このサイトの英語ページは日本語のページを逐次、Google 翻訳したものに手を加えたものである。)

License

The author is a Japanese.

I intended this program to be public-domain, but you can treat this program under the (new) BSD-License or under the Artistic License, if it is convenient for you.

Within three months after the release of this program, I especially admit responsibility of efforts for rational requests of correction to this program.

I often have bouts of schizophrenia, but I believe that my intention is legitimately fulfilled.

(Mozilla の配布ページでは、わかりやすさのため、BSD License にしているが、それを緩めた上記のライセンスで良い。)