2010年1月27日

Firefox, GoogleChromeのJavaScript prototype汚染話

Firefox拡張のprototype汚染に始まり、GoogleChrome拡張の話へ
5
mooz @stillpedant

あ、 Google Toolbar や Web Developer などでおかしくなる問題、原因がわかったっ。こいつら prototype 汚染してるっぽい。 Iterator(obj) として for 回したら変なプロパティ大量に出てきて恐ろしやー。

2010-01-27 22:16:35
Re: ゼロから始めるAgile生活 @teramako

@stillpedant うわっ、拡張でprototype汚染か。なんか他でもあって悩まされた記憶が。。。

2010-01-27 22:18:26
mooz @stillpedant

@teramako ごめんなさい、今このような現象に悩まされているのですが、これってやはり prototype 汚染ですかね? それとも __iterator__ 汚染なんでしょうか。 http://gist.github.com/287828

2010-01-27 22:30:49
Re: ゼロから始めるAgile生活 @teramako

Ubiquity だったような気もする RT @teramako: @stillpedant うわっ、拡張でprototype汚染か。なんか他でもあって悩まされた記憶が。。。

2010-01-27 22:18:53
mooz @stillpedant

それとも僕のミスなのかしらん。よく分からない。

2010-01-27 22:31:26
Re: ゼロから始めるAgile生活 @teramako

@stillpedant 僕の場合はObject.prototype.inspectってメソッドを加えたら変なことになったんですけど。。。これはちょっと分からないです。疑わしい拡張内を検索してみないと。

2010-01-27 22:35:47
mooz @stillpedant

@teramako そうですかー。エラーコンソールから Google Toolbar のソースコードに飛んでみたんですけれど、見事に難読化されていてあちゃーという感じでしたw

2010-01-27 22:38:23
mooz @stillpedant

Google Toolbar, YSLow, WebDeveloper. この辺りの拡張機能作ってる人たちって、 Web と同じ感覚でやっているのではないかな。

2010-01-27 22:42:25
こんにちは、日本目光協会のほうからやってきました @anekos

. @stillpedant @teramako http://bit.ly/aGClW2 こういったコードを他のアドオンより先に仕込めたら分かりそうな気がするんですが、そういうのを上手くやることってできるんですかねぇ。

2010-01-27 22:42:47
Re: ゼロから始めるAgile生活 @teramako

@stillpedant GoogleToolbarのソースを grep "\bString\b" -nr * したら lib/toolbar.js:665 にいろいろ出てきましたw

2010-01-27 22:43:06
Re: ゼロから始めるAgile生活 @teramako

あ、"\bString.prototype\b"の方が良いか RT @teramako: @stillpedant GoogleToolbarのソースを grep "\bString\b" -nr * したら lib/toolbar.js:665 にいろいろ出てきましたw

2010-01-27 22:44:16
Re: ゼロから始めるAgile生活 @teramako

@anekos 変なのを思いついたんですけど、Fxインストールディレクトリ/chrome/*.jar内のbrowser.js辺りをいじるとかw

2010-01-27 22:45:40
こんにちは、日本目光協会のほうからやってきました @anekos

@teramako それはまた強引ですねw しかし、それなら確実でもありますね。

2010-01-27 22:47:37
mooz @stillpedant

@anekos アドオンがロードされる順番をコントロール出来ればいけそうな気もしますね。切にやりたいです。

2010-01-27 22:47:45
mooz @stillpedant

ぎゃー。すごい、色々でてきました! RT @teramako: @stillpedant GoogleToolbarのソースを grep "\bString\b" -nr * したら lib/toolbar.js:665 にいろいろ出てきましたw

2010-01-27 22:48:42
Re: ゼロから始めるAgile生活 @teramako

@anekos あ、でも、Observerからの通知でfx-startupみたいなのとどっちが先に動くか分からないですね。。。

2010-01-27 22:49:30
mooz @stillpedant

拡張機能で prototype 汚染するやつとか、○ねば良いのに。 String.prototype.trim とかさ。そういうのは String 派生のクラス定義してやろうよ。

2010-01-27 22:50:05
Re: ゼロから始めるAgile生活 @teramako

@stillpedant これは fxxk google って言って良い気がします

2010-01-27 22:50:33
Re: ゼロから始めるAgile生活 @teramako

@stillpedant てか、String#trimって今じゃ普通にあるしw

2010-01-27 22:53:42
こんにちは、日本目光協会のほうからやってきました @anekos

@stillpedant デスヨネー。そもそもかぶったら自分たちだって困るだろうに。 > 汚染

2010-01-27 22:55:50
mooz @stillpedant

@teramako ww JS 1.8 からだったんですか。ということは、他の subs とかが悪さしてたんですかね。独自に定義されたプロトタイプは for each に出てきてしまうと。

2010-01-27 22:56:58
mooz @stillpedant

@anekos 本当にそうですよね。この辺りのアドオンはかなり併用されてると思うので Compatibility とかあったもんじゃないという感じです。

2010-01-27 22:58:29
Re: ゼロから始めるAgile生活 @teramako

拡張のコードはchrome特権を持ったSandbox内で実行されればprototype汚染とかなくなるのかな...

2010-01-27 22:58:48
残りを読む(16)

コメント

てらまこ @teramako 2010年1月28日
最後にGreaseKitの話を追加
0
てらまこ @teramako 2010年1月28日
時間順序が変になっているところを修正
0