軽量版(?)Googleノートブック「Google Notebook Light by userChrome.js」公開

■ 自作ソフト Posted by ひぐま (Higmmer) on 2007-05-14 at 03:28:37

◆共有テーマ: インターネットサービス [コンピュータ]

Google ノートブックはオンラインメモ帳としても便利なサービスですが、何といっても特徴的なのは閲覧しているWebサイトから好きなところを切り取ってクリップすることができる機能でしょう。ところがその機能を使うにはGoogleが提供する専用のアドオンをインストールする必要があるんですね。物は試しと入れてみたところ自分の場合Firefoxの動作が少し重く不安定になってしまいました。そうでなくても既に37個ものアドオンが入っておりこれ以上増やすのは避けたかったので泣く泣くアンインストールしました。

欲しいのはメモを切り貼りする機能だけなので既に誰かがブックマークレットやGreasemonkeyスクリプトを書いているだろうと思ったのですがどうやらそういったものはまだ作られていない様子。なので無い物は作るしかないだろうということで自分で作ることにしました。といってもさすがにブックマークレットで実現するのは無理っぽかったので結局userChrome.jsを使い、ソースの解析から機能の抽出まで約1週間かけて何とか移植に成功。というわけで…。

Google Notebook Light by userChrome.js

これは公式版のGoogleノートブック拡張機能から必要最小限の機能だけを抜き出してスクリプト化したものです。公式版と違って以下の制限事項があります。

  • Googleアカウントにログインした状態でないとうまく動作しないかも知れません
  • フレームを使ったページなど一部のページで正しく機能しない可能性があります
  • ページ内に直接[+]ボタンを表示する機能はありません
  • ポップアップウィンドウ表示には対応していません
  • というか単に機能が足りないだけであんまり軽量じゃないかも知れませんorz

その他実装していない機能・動作が多々ありますので予期せぬ誤動作・不具合が発生する可能性は十分あります。何が起こっても当方では一切責任を持てませんので自分で対処できる方のみ使用して下さい!!

  • gnotes_byuc.js Version 1.0.4 (2008/6/25公開) 公開終了しました

本ソフトを使用するには上記ファイル内のコードをコピーしてプロファイルフォルダ内の "userChrome.js" に貼り付けて下さい(*)。

(*) 注: userChrome.js 0.8の場合は "if (location != ..." という行よりも下に配置して下さい

動作確認は以下の環境で行いました。

  • WindowsXP SP2
  • Firefox 2.0.0.14 / 3.0
  • userChrome.js 0.7 / 0.8

スクリーンショット

Google Notobook Light by userChrome.js コンテキストメニュー

コンテキストメニューの「Google ノートブックに追加」を実行するとミニウィンドウが開き、自動的にページタイトルとURLが追記されます。リンクや画像を追加したり範囲を指定してコピーすることも可能。

Google Notebook Light by userChrome.js ミニウィンドウ

こんな風にミニウィンドウは公式版とは違ってページの上部に表示されます。もし位置がおかしかったり気に食わない場合は適当にソースを修正して下さい。

おまけ:ノートブックを開くためのCustom Buttons用ボタン

前記のスクリプトだけではミニウィンドウを開くと必ず新しいメモが追加されるため、単にノートブックを開きたいだけの場合には不便です。そこでミニウィンドウを開くためだけのCustom Buttons用ボタンも用意しました。

動作確認はこちらのサイトにある日本語版 0.0.2 alphaで行っています。インストールするには以下のリンクをクリックした後、ツールバーのカスタマイズから好きなところにボタンを配置して下さい。

(*) このボタン単体では動作しません。必ず「Google Notebook Light by userChrome.js」とセットで使用する必要があります。

このボタンはトグルボタンになっています。押すたびにミニウィンドウの表示/非表示が切り替わります。

更新履歴

2008/6/25 Version 1.0.4
  • Firefox3.0で動作しなくなっていたのを(たぶん)修正
2007/9/27 Version 1.0.2
  • Googleノートブックのバージョンアップに伴い動作しなくなっていたのを修正
2007/5/14 Version 1.0.0
  • 公開

近ごろNoScript拡張の様子が何かおかしい

■ ネット Posted by ひぐま (Higmmer) on 2007-05-04 at 00:58:56

◆共有テーマ: Firefox [コンピュータ]

CPU使用率上昇問題が復活

これはずいぶん前から気づいてはいたんですが、NoScriptの現在公開されているバージョンには一度直ったはずの「NoScriptを長時間使い続けるとCPU使用率が上昇する問題」が復活しています。逐一追いかけていたわけではありませんがどうやら

v 1.1.4.6.070325
x Fixed regression, leak happening on window closure (10x pirlouy)
NoScript CHANGELOG より

この修正によってこちらが提案したパッチが外されてしまった模様orz。でも「ウィンドウを閉じる際のリークを修正」とありますが少なくとも当方の環境ではLeak Monitorで観察する限り特にリークは確認できませんでした。仮に何らかのタイミングで発生するとしても(自分の使い方では)NoScriptが通知バーを出す頻度の方が圧倒的に高いわけで、どちらの対策を優先すべきかは明らか(*)だと思うんですが…。

(*) まぁ元を質せばFirefox本体の実装に原因があるんでしょうけど。

というわけでNoScriptの最新バージョンを使う場合は通知バーの表示を切っておくことをおすすめします。

NoScript作者とAdblock Plus作者がフォーラムでバトル

さて前記修正が入ったのと同じ頃、NoScriptの作者Maone氏はXSS対策の実装に取りかかりました。きっかけは恐らくこのフォーラムAdblock Plusの作者Palant氏が「NoScriptは(Adblockも)セキュリティ対策としては使えない」と主張したことです。彼の主張(*)を自分なりに解釈すると、

  1. NoScriptを入れるとまともに動かなくなるサイトが多すぎるので、ユーザーは「動作や表示がおかしかったらとりあえずスクリプトを許可」するのが癖になってしまう。
  2. 一見無害かつ有用そうに見えるサイトを用意してユーザーの気を引くのは簡単。一時的にでも許可してくれたら攻撃者にとっては十分。
  3. ホワイトリスト(信頼サイト)モデルの欠点:
    1. そのサイトにXSS脆弱性があったら細工したリンクを設置するだけであらゆるサイトから攻撃が可能(サーバー側スクリプトを動かすことができればJavascriptさえ不要)。
    2. 今日安全だったサイトが明日も安全であるという保証はどこにもない(誰かに書き換えられるかも知れないし、実は管理者が悪人かも知れない)。
    3. yahoo.comのような(メジャーで共同空間としても使われる)サイトがデフォルトでホワイトリストに入っているのは問題。
  4. Firefoxといえども未知・未修正の脆弱性を突かれたらひとたまりもない。現実にFirefoxに対して行われた攻撃でNoScriptを入れていれば防げたという事例が示されない限りNoScriptは被害妄想ユーザーのためのものとしか思えない。

このPalant氏の容赦ない主張を受けて最終的にMaone氏は"I gave up answering."と応えています。私個人としては(脆弱性問題で苦い経験をした一人として)Maone氏に同情しつつもPalant氏の主張にも一理あると思います。個人的にはSageの問題が表面化するまではNoScriptは使ってなかったですし、今もどちらかというとセキュリティ対策というより各種トラッキング広告やアクセス解析などが裏で動くのを防ぐという意味合いの方が強いです(といいつつ当ひまグにも解析仕込んでますが…すみません)。

余談ではありますが、Palant氏によるとFirekeeperのようなIDS型――普段は何もせず実際に怪しいコードを検出した時だけ警告を出すというアプローチ(*)の方が好みだそうです。但し新たな脆弱性の発見から修正までの「繋ぎ」として適切なルールセットが提供されることが前提ですが。

XSS対策で深みにはまるNoScript

それはともかく、"Firefox with NoScript is safer than Firefox"というキャッチコピーを掲げるMaone氏にも意地があったのでしょう。それから怒涛の更新ラッシュが始まり現在まで続いています。公式アナウンスを見る限り前述の3-aの問題、つまりサイトのXSS脆弱性を突いた攻撃を防ぐ仕組みを実装しようとしているようです。詳しくは調べてませんがリクエストヘッダ(URL/Referer/POSTデータ等)に含まれる「危険な」文字をエスケープないし削除することで対策を試みている模様。

その手法がどこまで有効なのかの判断は専門家に任せるとして、表面的にはまともに動かないサイトを更に増やす結果になったようで(特にマルチバイト圏で)、公式フォーラムにも不具合報告が少なからず寄せられています。一応Anti-XSSフィルタを回避するフィルタも実装されていますがとても素人に扱えるものではなくなってしまっています。しかも突貫工事でコードを改修した弊害からか(?)様々なデグレードも発生しているようです。

結果としていつまで経ってもリリースが安定せず、特に1.1.4.8系ではほぼ毎日のように更新版がリリースされるという事態に陥ってしまっています(*)。作者の努力には敬意を表しますが、個人的にはここまでする必要があるのかというのがというのが正直なところだったりします。完璧を求めるあまり多くの一般ユーザーのことが見えなくなっているような気が……。

(*) 作者としては1.1.4.8.070502が「(Hopefully) ultimate fix」とのことですが果たして…。

ちなみに私自身はXSS対策導入前(で自分のパッチが入っている)最後の安定版である1.1.4.6.070317までで更新を止めました。何か問題があったらその時また考えるつもり。