[vimperator]copy.js の wedata 読み込みセキュリティ強化 - suVeneのアレ

[vimperator]copy.js の wedata 読み込みセキュリティ強化

it:teramako(作者)さんから、copy.js の wedata 読込みに関してこんなコメントが。

僕はあまり歓迎していない。

copy.jsにはcustom句(?)があり、この値がfunctionオブジェクトの場合はそれを実行した結果文字列をクリップボードにコピーする機能がある。これがWeData化すると、よく分からないネットワーク上の誰もが更新できるコードChrome特権化で動くことになる。

copy.js のWeData対応について – vimpな日々 – vimperatorグループ はてなブックマーク数

この点は確かに、同じように悩んだ部分である。
なので、とりあえずの対処として default では wedata は読込まず、かつ読込む設定にしても custom 関数はさらにオプション指定しないと登録されないようにと二重の設定をさせるようにしていたのだが(前回の記事参照)、 やはりいつの間にか悪意あるユーザーによって function が書き換えられないとも限らない。
なので、少しセキュリティ強化を入れた。

まず、以下のような template があったとする。

copy.js template

e.g.)wedata vimp copy template

これを初めて実行しようとした時に、以下のようなメッセージが表示される。

確認ダイアログ

確認ダイアログ

キャンセルすると、そのまま終了。OK を押すと、custom 関数が実行され、

実行ダイアログ

実行ダイアログ

と、表示される。ここまでが、1回目のチェック。

ここで、悪意あるユーザーが現れ、wedata のデータを以下のように変更したとする。

変更されたデータ

変更されたデータ

で、このように wedata が書き換えられた状態を読込み、次回実行しようとすると、以前確認した時点から変更があれば、再度確認ダイアログを表示する。

(wedata のデータは 24時間保存しているので、実際には変更されてもすぐに取り込まれる訳ではない)

確認ダイアログ2

確認ダイアログ2

どうだろう。

これなら Greasemonkey などのように、user scripts を確認するタイミングができるし、知らないうちに違う function に置き換えられる危険も少ない。(バグがなければ。ただ、confirm は default で ok に focus がある……)

custom に指定する funciton は大抵小さいだろうから、これくらいで十分かな?と。

Links

スポンサーリンク
スポンサーリンク

コメント

  1. […] [vimperator]copy.js の wedata 読み込みセキュリティ強化 – suVeneのアレ […]

コメントをどうぞ

メールアドレスが公開されることはありません。