2014-06-24 10 views
5

Nel mio SDK add-on, mi piacerebbeIn che modo lo script del contenuto del componente aggiuntivo SDK può interagire con uno script di pagina del sito Web?

  • chiamata di una funzione in uno script pagina
  • esportazione, leggere (get), scrivere (set) o manipolare qualche variabile o una proprietà in una pagina script
  • Esportare una nuova funzione o sovrascrivere una funzione esistente in uno script di pagina
  • o inviare un evento personalizzato a una pagina che lo script di pagina può ascoltare.

In che modo lo script del contenuto dell'SDK dell'adattatore può comunicare con un sito Web?

+3

è inteso come una risposta canonica a questi tipi di domande. – nmaier

+1

Questa domanda è collegata dal wiki [tag: firefox-addon]. – nmaier

+0

Ho spostato il collegamento nel [wiki dei tag firefox-addon-sdk] (https://stackoverflow.com/tags/firefox-addon-sdk/info), che è il luogo in cui appartiene IMHO. –

risposta

3

Esistono molti modi per interagire con gli script di pagina, i più comuni dei quali sono trattati nella documentazione ufficiale, inclusi tutti i metodi elencati nella domanda.

Leggere "Interacting with page scripts".

Tuttavia, va sottolineato che l'interazione con gli script di pagina in modo sicuro può essere difficile. Essere particolarmente consapevoli del fatto che si chiama unsafeWindowpericoloso per un motivo:

Prestare attenzione usando unsafeWindow: non si può contare su una qualsiasi delle sue proprietà o funzioni che sono, o fare, che cosa vi aspettate. Qualcuno di loro, persino setter e getter, avrebbe potuto essere ridefinito da uno script di pagina. Non usarlo a meno che non ti fidi della pagina, e anche in questo caso fai attenzione.

Inoltre, unsafeWindow non è un'API supportata, quindi potrebbe essere rimossa o modificata in una versione futura dell'SDK.

lettura di dati da o eseguire funzioni di unsafeWindow è sicuro, nel senso che essa non può direttamente portare all'esecuzione di codice in un altro (lo script contenuto) contesto di sicurezza. I compartimenti del motore Javascript si assicureranno di ciò.

Ma è proprio vero che non devi mai fidarti dei dati provenienti da un sito web. Aspettatevi sempre il codice da lanciare, Denial-of-service con loop infiniti inattesi o simili. E mai in modo esplicito o implicito eval codice uate nel contesto dello script di contenuto.

Inoltre, non pensare mai di poter effettivamente fidarsi di un sito Web, anche se è il tuo sito web. I siti Web possono essere compromessi (hackerati), i proprietari possono cambiare in futuro, i dati potrebbero essere modificati durante il percorso (attacchi Man-In-The-Middle attivi) o un altro componente aggiuntivo potrebbe averlo modificato, ecc.

+0

Non userei 'unsafeWindow' o' eval'. In generale (e non specifico per Addon SDK), ho usato Location hack per il codice corto, Content Script Injection per un'iniezione completa e ''beforescriptexecute'' per prevenire o alterare gli script di contenuto. – erosman

Problemi correlati