Greasemonkeyによるアプリケーション開発

第1回 Greasemonkeyによるアプリケーション開発の準備

この記事を読むのに必要な時間:およそ 6 分

(3)ユーザスクリプトの管理

ユーザスクリプトの実行対象ページは「ユーザスクリプト管理」画面で設定することができます。⁠ユーザスクリプト管理」画面の表示方法はいくつかありますが,一番簡単な方法は,⁠1)で紹介した⁠猿の顔アイコン⁠のコンテキストメニューの「ユーザスクリプトの管理」を選択する方法でしょう。

ユーザスクリプトの管理画面では実行対象ページの設定の他に,ユーザスクリプトの実行順序の設定,ユーザスクリプトの有効/無効の管理,アンインストール,ユーザスクリプトの編集(エディタの起動)を行うことができます。

画面左側にインストール済みのユーザスクリプトの名称がリストされています。このリストの一つを選択すると画面の右側に選択したユーザスクリプトに関する情報が表示されます。具体的な表示項目はユーザスクリプトの名称と説明文,実行するページのURLのリスト,実行しないページのURLのリストです。

「ユーザスクリプト管理」画面

「ユーザスクリプト管理」画面

実行する/しないページの設定

対象のユーザスクリプトをどのページで実行するか,しないかを,そのページのURLを指定することで設定することができます。URLの指定には「*」をワイルドカードとして設定することもできます。例えば

http://gihyo.jp/*

と書けば技術評論社のサイト内のページすべてを指定したことになります。では,⁠実行するページ」「実行しないページ」の両方に同じURLを指定するとどうなるでしょう? 実際に試してみればすぐに分かりますが,⁠実行しないページ」の方が優先度が高くなっていて,実行されないことになります。

有効/無効の設定

管理画面左下に「有効にする」のチェックボックスがあります。これをチェックすれば(インストール直後はデフォルトでチェックされている)有効に,チェックをはずせば無効になります。無効になっているユーザスクリプトはグレーで表示されます。

ユーザスクリプトのエディタによる編集

「有効にする」のチェックボックスのすぐ隣に「編集」ボタンがあります。これを押すと選択中のユーザスクリプトをエディタで開きます。エディタはデフォルトでは何も設定されていません。何も設定されていない状態で「編集」ボタンを押すと,エディタとして設定するプログラムを選択するダイアログが現れます。このダイアログでエディタを設定すると,以後そのプログラムでユーザスクリプトが開かれるようになります。このエディタの設定はabout:configの画面でgreasemonkey.editorの項目として設定されます。設定し直したいときはこの項目を設定しなおせばOKです(設定値を削除した上で編集ボタンを押すと,再びエディタとして設定するプログラムを選択するダイアログが現れます)⁠

ユーザスクリプトのアンインストール

「実行しないページ」のリストの下側あたりにある「アンインストール」ボタンを押すと選択中のユーザスクリプトをアンインストールすることができます。このとき「関連付けられた設定も削除」にチェックが入っているとその名の通り関連付けられた設定も削除されます。

Greasemonkeyの使い方の説明は以上です。

Greasemonkeyユーザスクリプトに関する安全性について

さて早速ユーザスクリプトを何かインストールしてまずは使ってみよう,といきたいところですが,その前にGreasemonkeyユーザスクリプトに関する安全性について簡単に触れておきたいと思います。

一般的なJavaScript混入

Greasemonkeyユーザスクリプトの安全性の話の前に,まずは一般的なWebアプリケーションにおける脆弱性のひとつであるJavaScript混入について簡単に説明します。これは動的に生成されるページ内に意図しないJavaScriptが出力されてしまうものです。

例えばWebメールのアプリケーションがメールの本文にHTMLが書かれていた場合にそれをそのままHTMLとしてページ内に出力する機能があるとすると,見栄えのよいメールが書けてよいように思えるかもしれません。しかし,scriptタグもそのまま出力できてしまうような作りになっていると,その中身のJavaScriptも実行していまうことになります。このようなWebメールアプリケーションに対しては,攻撃者は攻撃用JavaScriptを含んだメールをこの脆弱性を持ったWebメールアプケーションのユーザ向けに送信するだけで攻撃に成功してしまいます。この脆弱性のあるWebメールアプリケーションで攻撃用JavaScriptを含むメールを開いてしまうと攻撃用JavaScriptが実行されてしまい,メール本文やアドレス帳などの情報が盗まれたり,セッションが奪われて本来のユーザに成り変わって攻撃者に操作されてしまう,といった問題が起こります(昨今これほどに容易に攻撃可能なWebメールアプリケーションはないと思いますが説明のために書いています)⁠

このため,Webアプリケーション開発者は,こうした脆弱性を塞ぐために動的に生成するページに意図しないJavaScriptが含まれないようにするわけです。

著者プロフィール

gotin(ゴチン:GOrdon TImothy Nathanson)

会社員です。肩書きは特にありません。Greasemonkeyは会社の後輩が使っていてそれ面白いじゃんって思って使い始めました。自宅サーバで作ったRuby on Railsな自作ブログツールで作った自作ブログにGreasemonkeyのユーザスクリプトを載せたりもしていたんですが,誰にも読んでもらえなくて寂しかったのです。で,作ったままほったらかしにしていたはてなダイアリーに載せたら自作ブログよりかはありがたいことに多少読んでもらえるようになり,その後いろいろあって,そして今ここにいます。

URLhttp://d.hatena.ne.jp/gotin/