it:teramako(作者)さんから、copy.js の wedata 読込みに関してこんなコメントが。
僕はあまり歓迎していない。
copy.jsにはcustom句(?)があり、この値がfunctionオブジェクトの場合はそれを実行した結果文字列をクリップボードにコピーする機能がある。これがWeData化すると、よく分からないネットワーク上の誰もが更新できるコードがChrome特権化で動くことになる。
この点は確かに、同じように悩んだ部分である。
なので、とりあえずの対処として default では wedata は読込まず、かつ読込む設定にしても custom 関数はさらにオプション指定しないと登録されないようにと二重の設定をさせるようにしていたのだが(前回の記事参照)、 やはりいつの間にか悪意あるユーザーによって function が書き換えられないとも限らない。
なので、少しセキュリティ強化を入れた。
まず、以下のような template があったとする。
これを初めて実行しようとした時に、以下のようなメッセージが表示される。
キャンセルすると、そのまま終了。OK を押すと、custom 関数が実行され、
と、表示される。ここまでが、1回目のチェック。
ここで、悪意あるユーザーが現れ、wedata のデータを以下のように変更したとする。
で、このように wedata が書き換えられた状態を読込み、次回実行しようとすると、以前確認した時点から変更があれば、再度確認ダイアログを表示する。
(wedata のデータは 24時間保存しているので、実際には変更されてもすぐに取り込まれる訳ではない)
どうだろう。
これなら Greasemonkey などのように、user scripts を確認するタイミングができるし、知らないうちに違う function に置き換えられる危険も少ない。(バグがなければ。ただ、confirm は default で ok に focus がある……)
custom に指定する funciton は大抵小さいだろうから、これくらいで十分かな?と。
コメント
[…] [vimperator]copy.js の wedata 読み込みセキュリティ強化 – suVeneのアレ […]