Odpowiedz

7

Tak, skrypty Greasemonkey to normally wrapped in an anonymous function. I, Chrome userscripts apparently are too.

Ale, co ważniejsze, skrypty Greasemonkey są zwykle owinięty w XPCNativeWrapper piaskownicy, a Google Chrome konwertuje userscripts do rozszerzeń i they operate in an arena that Google calls an "isolated world" .

Dzięki temu nie trzeba owijać kodu skryptu w anonimowe funkcje ze względów bezpieczeństwa, są one już chronione.

Tylko uważaj, że:

  1. Jeśli wstrzyknięcia kodu bezpośrednio na stronie (tworzenie <script> tag), a następnie, że kod może być postrzegane przez JS strony.
  2. Jeśli użyjesz unsafeWindow, wtedy strona teoretycznie mogłaby śledzić ją i uzyskać nieznacznie podwyższone uprawnienia.

Ryzyko jest bardzo niskie i nie mogłem znaleźć żadnych udokumentowanych exploitów na wolności.

~~~
Dolna linia, skrypty są izolowane na różne stopnie w obu przeglądarkach. (I to nie tylko dzięki zapakowaniu w anonimowe funkcje.)

Greasemonkey ma a nice set of privileged features dostępne w przeglądarce Firefox. Chociaż usercripts w Chrome są znacznie bardziej ograniczone.

Jednak większość funkcji GM jest przywracana do Chrome przy użyciu Tampermonkey extension.




Na Greasemonkey version 1.0 (24 sierpnia 2012), przy czym Obszar izolowany jest sterowany przez the @grant directive. Jeśli skrypt działa z (lub domyślnie) jest @grant none, to piaskownica nie jest używana. Skrypt działa tylko w zakresie prywatnym, a normalne funkcje API nie będą działać.

Czy to nie brzmi dużo lepiej/przyjemniej niż jakaś paskudna piaskownica? (^_^)

.

+1

Dzięki za superinformacyjną odpowiedź! Nie muszę więc owijać mojego kodu w anonimowe funkcje w Chrome lub w Usermonkey, prawda? – Acorn

+0

W rzeczywistości oba [Greasemonkey] (https://github.com/greasemonkey/greasemonkey/blob/0ca46387f89955f083d4bc65bd70622568f79bbb/components/greasemonkey.js#L508) i [Chromium] (http://www.google.com/codesearch#OAMlx_jo- ck/src/chrome/renderer/extensions/user_script_slave.cc & l = 41) owijają usercripty wewnątrz anonimowych funkcji (chociaż Greasemonkey przestrzega klucza metadanych @unwrap, którego Chromium nie ma). – Ventero

+0

Ah, więc są zapakowane w anonimowe funkcje * i * piaskownica w Greasemonkey! [@unwrap docs] (http://wiki.greasespot.net/Metadata_Block#.40unwrap) – Acorn