<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wx="http://ilps.science.uva.nl/WikiXML/wx" xml:lang="it" lang="it">
<head>
<title>NPAPI</title>
<meta name="wx_namespace" content="0"/>
<meta name="wx_pagename" content="NPAPI"/>
<meta name="wx_page_id" content="1274061"/>
</head>
<body>
<div id="wx_article">
<wx:section level="1" title="NPAPI" id="wxsec1"><h1 class="pagetitle" id="wx1">NPAPI</h1>

<p id="wx2">La <b id="wx3">NPAPI</b> (o <i id="wx4">Netscape Plugin Application Programming Interface</i>) è un architettura <a href="/wit/Multipiattaforma" title="Multipiattaforma" wx:linktype="known" wx:pagename="Multipiattaforma" wx:page_id="160830" id="wx5">multipiattaforma</a> per i <a href="/wit/Plugin" title="Plugin" wx:linktype="known" wx:pagename="Plugin" wx:page_id="132839" id="wx6">plugin</a> utilizzata da molti <a href="/wit/Browser_web" title="Browser web" wx:linktype="known" wx:pagename="Browser_web" wx:page_id="255122" id="wx7">browser web</a>. Sviluppata inizialmente per la famiglia di browser <a href="/wit/Netscape_Communications_Corporation" class="new" title="Netscape Communications Corporation" wx:linktype="unknown" wx:pagename="Netscape_Communications_Corporation" id="wx8">Netscape</a>, a partire da <a href="/wit/Netscape_Navigator" title="Netscape Navigator" wx:linktype="known" wx:pagename="Netscape_Navigator" wx:page_id="70193" id="wx9">Netscape Navigator</a> 2.0, è stata implementata in seguito in altri browser, tra cui <a href="/wit/Mozilla_Application_Suite" title="Mozilla Application Suite" wx:linktype="known" wx:pagename="Mozilla_Application_Suite" wx:page_id="12064" id="wx10">Mozilla Application Suite</a>, <a href="/wit/Mozilla_Firefox" title="Mozilla Firefox" wx:linktype="known" wx:pagename="Mozilla_Firefox" wx:page_id="9444" id="wx11">Mozilla Firefox</a>, <a href="/wit/Safari_%28browser%29" title="Safari (browser)" wx:linktype="known" wx:pagename="Safari_(browser)" wx:page_id="42758" id="wx12">Safari</a>, <a href="/wit/Opera_%28browser%29" title="Opera (browser)" wx:linktype="known" wx:pagename="Opera_(browser)" wx:page_id="11763" id="wx13">Opera</a>, <a href="/wit/Konqueror" title="Konqueror" wx:linktype="known" wx:pagename="Konqueror" wx:page_id="61861" id="wx14">Konqueror</a> ed alcune versioni di <a href="/wit/Microsoft" title="Microsoft" wx:linktype="known" wx:pagename="Microsoft" wx:page_id="1596894" id="wx15">Microsoft</a> <a href="/wit/Internet_Explorer" title="Internet Explorer" wx:linktype="known" wx:pagename="Internet_Explorer" wx:page_id="641073" id="wx16">Internet Explorer</a>.</p>

<p id="wx17">Il suo successo può essere in parte attribuito alla sua semplicità. Un plugin dichiara di gestire alcuni tipi <a href="/wit/MIME" title="MIME" wx:linktype="known" wx:pagename="MIME" wx:page_id="50982" id="wx18">MIME</a> (ad esempio "audio/mp3") mediante le informazioni sui file presentati. Quando il browser incontra tale tipo di contenuti carica il plugin associato, delimita lo spazio all'interno dell'area di visualizzazione da assegnare al plugin, e infine vi trasferisce dati. Al plugin viene, quindi, assegnato il compito di gestire i dati nel modo più opportuno, sia esso visivo, audio o qualunque altra cosa. In questo modo, un plugin viene eseguito nella propria parte di pagina, a differenza dei browser precedenti, che dovevano lanciare un'applicazione esterna per gestire i tipi di contenuto a loro ignoti.</p>

<p id="wx19">L'<a href="/wit/Application_programming_interface" title="Application programming interface" wx:linktype="known" wx:pagename="Application_programming_interface" wx:page_id="12780" id="wx20">API</a> richiede che ogni plugin implementi e pubblichi un numero abbastanza piccolo di funzioni. Si tratta approsimativamente 15 funzioni in totale per l'inizializzazione, la creazione, la distruzione e il posizionamento dei plugin. La NPAPI supporta anche lo scripting, la stampa, la visualizzazione a schermo intero, i plugin <i id="wx21">windowless</i> e lo <a href="/wit/Streaming" title="Streaming" wx:linktype="known" wx:pagename="Streaming" wx:page_id="88331" id="wx22">streaming</a> dei contenuti.</p>

<div id="wx_toc"/>

<a id="Storia" name="Storia"/>
<wx:section level="2" title="Storia" id="wxsec2"><h2 id="wx23">Storia</h2>

<p id="wx24">L'origine della funzionalità dei plugin Netscape va ricercata non in <a href="/wit/Netscape_Communications_Corporation" class="new" title="Netscape Communications Corporation" wx:linktype="unknown" wx:pagename="Netscape_Communications_Corporation" id="wx25">Netscape</a>, ma in <a href="/wit/Adobe_Systems" title="Adobe Systems" wx:linktype="known" wx:pagename="Adobe_Systems" wx:page_id="75638" id="wx26">Adobe Systems</a>. <a href="/wit/John_Warnock" class="new" title="John Warnock" wx:linktype="unknown" wx:pagename="John_Warnock" id="wx27">John Warnock</a>, <a href="/wit/Amministratore_delegato" title="Amministratore delegato" wx:linktype="known" wx:pagename="Amministratore_delegato" wx:page_id="154094" id="wx28">amministratore delegato</a> di Adobe, ed <a href="/wit/Allan_Padget" class="new" title="Allan Padget" wx:linktype="unknown" wx:pagename="Allan_Padget" id="wx29">Allan Padget</a>, uno dei principali autori di <a href="/wit/Acrobat_Reader" title="Acrobat Reader" wx:linktype="known" wx:pagename="Acrobat_Reader" wx:page_id="431279" id="wx30">Acrobat Reader</a>, speravano che il formato di file di punta di Adobe, <a href="/wit/Portable_Document_Format" title="Portable Document Format" wx:linktype="known" wx:pagename="Portable_Document_Format" wx:page_id="49877" id="wx31">PDF</a>, potesse espandere la propria sfera d'uso ben oltre l'ambito desktop.</p>

<p id="wx32">Perciò, poco tempo dopo il rilascio della prima versione di Navigator da parte di Netscape, Padgett, insieme all'ingegner Eshwar Priyadrshan, tentò di trovare un modo per rendere PDF parte integrante dell'esperienza del Web. Il risultato fu un'applicazione dimostrativa mostrata a Warnock e a <a href="/wit/James_H._Clark" title="James H. Clark" wx:linktype="known" wx:pagename="James_H._Clark" wx:page_id="36786" id="wx33">Jim Clark</a>, amministratore delegato di Netscape. Prima di quella demo, gli unici formati nativi sul Web erano le pagine <a href="/wit/HTML" title="HTML" wx:linktype="known" wx:pagename="HTML" wx:page_id="2226" id="wx34">HTML</a> e le immagini mostrate al loro interno. I collegamenti ad ogni altro tipo di file comportavano la richiesta all'utente di scaricare il file: fatto ciò, l'utente poteva aprire il file con l'applicazione più appropriata. In quella dimostrazione, tuttavia, quando un utente faceva click su un collegamento ad un file PDF, il file veniva aperto immediatamente all'interno della finestra del browser, mescolando indifferentemente la fruizione di pagine HTML e documenti PDF. Clark chiese con eccitazione chi di Netscape avesse fornito supporto tecnico per rendere possibile l'integrazione, ma scoprì che essa era stata raggiunta senza il coinvolgimento di Netscape, ma con un po' di <a href="/wit/Reverse_engineering" title="Reverse engineering" wx:linktype="known" wx:pagename="Reverse_engineering" wx:page_id="515988" id="wx35">reverse engineering</a> del browser.</p>

<p id="wx36">Le aziende stabilirono di incontrarsi la settimana successiva per trovare il modo di rendere appetibile quello che era conosciuto come "l'hack di Allan" per il mercato. Sebbene Netscape fosse pronta ad incorporare i PDF direttamente all'interno del browser, e certamente Adobe ne avrebbe guadagnato, Padgett propose un approccio diverso: un'architettura basata sui plugin. Gli ingegneri Adobe Gordon Dow e Nabeel Al-Shamma avevano da poco aggiunto un'architettura a plugin ad Acrobat Reader, per ridurre gli sforzi degli sviluppatori di terze parti. Padgett aveva partecipato allo sviluppo, e riteneva che se si fosse fornita l'occasione, altre aziende (e magari altri team all'interno di Adobe) avrebbero scelto di estendere le capacità del Web. Clark ed il team alla fine si convinsero, e cominciarono a disegnare l'API che avrebbe dovuto supportare il nuovo modello di sviluppo. Sebbene PDF sia stato il pioniere, si potrebbe affermare che plugin successivi, quali <a href="/wit/Macromedia_Flash" title="Macromedia Flash" wx:linktype="known" wx:pagename="Macromedia_Flash" wx:page_id="112978" id="wx37">Macromedia Flash</a> e <a href="/wit/Java_%28linguaggio%29" title="Java (linguaggio)" wx:linktype="known" wx:pagename="Java_(linguaggio)" wx:page_id="26747" id="wx38">Java</a>, abbiano inciso molto di più sul panorama del web.</p>

<a id="Supporto_agli_script" name="Supporto_agli_script"/>
</wx:section><wx:section level="2" title="Supporto agli script" id="wxsec3"><h2 id="wx39">Supporto agli script</h2>

<p id="wx40">La possibilità di aggiungere degli script ai plugin è una caratteristica che permette al codice JavaScript presente in una pagina di interagire con un plugin. Diverse versioni di Netscape, ed in seguito di Mozilla, hanno supportato questa caratteristica utilizzando tecnologie fra loro differenti: LiveConnect, XPConnect e npruntime.</p>

<a id="LiveConnect" name="LiveConnect"/>
<wx:section level="3" title="LiveConnect" id="wxsec9"><h3 id="wx41">LiveConnect</h3>

<p id="wx42">Con Netscape 4, la NPAPI venne estesa per permettere di sfruttare i plugin tramite degli script. Questa funzionalità venne chiamata <a href="/wit/LiveConnect" class="new" title="LiveConnect" wx:linktype="unknown" wx:pagename="LiveConnect" id="wx43">LiveConnect</a>. Un plugin poteva implementare e restituire un'istanza di una classe <a href="/wit/Java_%28linguaggio%29" title="Java (linguaggio)" wx:linktype="known" wx:pagename="Java_(linguaggio)" wx:page_id="26747" id="wx44">Java</a>. I metodi pubblici esposti da questa classe rappresentavano l'interfaccia cui potevano essere applicati degli script. La classe poteva essere chiamata tramite codice <a href="/wit/JavaScript" title="JavaScript" wx:linktype="known" wx:pagename="JavaScript" wx:page_id="2469" id="wx45">JavaScript</a>, come anche da altre applet Java in esecuzione all'interno della pagina, mentre il browser vigilava sulle chiamate tra i diversi contesti d'esecuzione.</p>

<p id="wx46">Lo svantaggio di LiveConnect risiedeva nell'essere legato a doppio filo con la versione di Java integrata all'interno del browsr Netscape. Ciò impediva al browser di utilizzare altri runtime, ed appesantiva significativamente il download del browser, dal momento che Java era un componente fondamentale per lo scripting dei plugin.</p>

<p id="wx47">Inoltre, la programmazione di LiveConnect non era affatto immediata. Lo sviluppatore doveva definire una classe Java per il plugin, eseguirla tramite un compilatore di intestazioni Java specializzato ed implementare i metodi nativi. La gestione delle stringhe, delle eccezioni e degli altri oggetti Java dal <a href="/wit/C%2B%2B" title="C++" wx:linktype="known" wx:pagename="C++" wx:page_id="26839" id="wx48">C++</a> era frustrante e certamente non lapalissiana. A peggiorare le cose era il fatto che LiveConnect utilizzava un'API adesso obsoleta per invocare metodi C++ nativi da Java, chiamato JRI. La tecnologia JRI è stata da tempo sostituita dalla <a href="/wit/Java_Native_Interface" title="Java Native Interface" wx:linktype="known" wx:pagename="Java_Native_Interface" wx:page_id="1119721" id="wx49">JNI</a>.</p>

<a id="XPConnect" name="XPConnect"/>
</wx:section><wx:section level="3" title="XPConnect" id="wxsec10"><h3 id="wx50">XPConnect</h3>

<p id="wx51">LiveConnect si rivelò estremamente problematico per Mozilla. La dipendenza da un runtime Java obsoleto e proprietario e dall'API JRI implicava l'impossibilità per LiveConnect di funzionare.</p>

<p id="wx52">Mozilla stava già utilizzando <a href="/wit/XPCOM" title="XPCOM" wx:linktype="known" wx:pagename="XPCOM" wx:page_id="211921" id="wx53">XPCOM</a> per definire le interfacce a molti oggetti implementati in C++. Ogni interfaccia veniva definita tramite un file <a href="/wit/IDL" title="IDL" wx:linktype="known" wx:pagename="IDL" wx:page_id="77010" id="wx54">IDL</a> (Interface Definition Language), e passata ad un compilatore IDL che produceva file d'intestazione ed una libreria indipendente dal linguaggio di programmazione che costituiva la rappresentazione binaria dell'interfaccia: quest'ultima descriveva l'interfaccia, i metodi, i parametri, le strutture dati e le enumerazioni.</p>

<p id="wx55"><a href="/wit/XPCOM" title="XPCOM" wx:linktype="known" wx:pagename="XPCOM" wx:page_id="211921" id="wx56">XPCOM</a> usa le informazioni sul tipo di libreria per regolamentare le chiamate tra diversi contesti di thread e tra JavaScript codice nativo C++ compilato. Dal momento che XPConnect viene utilizzato pesantemente da Mozilla, è molto robusto, supportato e documentato. A partire da Netscape 6.1 e Mozilla 0.9.2, la NPAPI è stata estesa in modo tale che un plugin potesse restituire un'interfaccia a se stesso gestibile tramite script, mentre XPConnect si occupa di gestire le chiamate a detto plugin da JavaScript e dal codice C++.</p>

<p id="wx57">Ciò rese non più necessaria la dipendenza da Java, ma provocò alcuni problemi. In particolare, poiché l'implementazione viene effettuata utilizzando componenti XPCOM, una tecnologia simile a <a href="/wit/Component_Object_Model" title="Component Object Model" wx:linktype="known" wx:pagename="Component_Object_Model" wx:page_id="416485" id="wx58">Microsoft COM</a>, lo sviluppatore del plugin deve saper gestire il reference counting, le interfacce, l'IDL e così via per poter implementare lo scripting. Inoltre, la dipendenza da XPCOM comportava alcuni problemi nel collegamento dinamico delle librerie (ad esempio il problema della <a href="/wit/Classe_base_fragile" class="new" title="Classe base fragile" wx:linktype="unknown" wx:pagename="Classe_base_fragile" id="wx59">classe base fragile</a>) che dovevano essere risolti per permettere al plugin di funzionare correttamente con browser differenti. XPCOM è stato in seguito modificato in modo tale da fornire una versione collegata staticamente per risolvere tali problemi. Quest'approccio richiede anche l'installazione di un file .xpt nella stessa locazione scelta per la DLL, altrimenti il plugin sembrerà funzionare, mentre la funzionalità di scripting non sara disponibile.</p>

<a id="npruntime" name="npruntime"/>
</wx:section><wx:section level="3" title="npruntime" id="wxsec11"><h3 id="wx60">npruntime</h3>

<p id="wx61">Alla fine del 2004, tutti i maggiori sviluppatori di browser (eccetto <a href="/wit/Microsoft" title="Microsoft" wx:linktype="known" wx:pagename="Microsoft" wx:page_id="1596894" id="wx62">Microsoft</a>) scelsero congiuntamente <a href="http://www.mozilla.org/projects/plugins/npruntime.html" class="external text" wx:linktype="external" rel="nofollow" id="wx63">npruntime</a> come estensione alla NPAPI originaria per fornire funzionalità di scripting, tramite un'API simile alla vecchia API stile C, ed indipendente da altre tecnologie quali Java o XPCOM.</p>

<p id="wx64">npruntime è supportato dalla generazione più recente di browser Mozilla (1.7.5+) / Firefox, Safari ed Opera. Tutti i nuovi plugin dovrebbero usare questa API.</p>

<a id="Confronto_tra_NPAPI_e_i_controlli_ActiveX" name="Confronto_tra_NPAPI_e_i_controlli_ActiveX"/>
</wx:section></wx:section><wx:section level="2" title="Confronto tra NPAPI e i controlli ActiveX" id="wxsec4"><h2 id="wx65">Confronto tra NPAPI e i controlli ActiveX</h2>

<p id="wx66">Microsoft sviluppò OLE2 (<a href="/wit/Object_linking_and_embedding" class="new" title="Object linking and embedding" wx:linktype="unknown" wx:pagename="Object_linking_and_embedding" id="wx67">Object Linking and Embedding</a>) per rendere possibile la creazione di documenti composti in applicazioni quali <a href="/wit/Microsoft_Word" title="Microsoft Word" wx:linktype="known" wx:pagename="Microsoft_Word" wx:page_id="137690" id="wx68">Microsoft Word</a>. Per esempio, un documento scritto in un word processor potrebbe contenere un foglio di calcolo incorporato che potrebbe essere lanciato all'interno della finestra del word processor.</p>

<p id="wx69">OLE2 fu progettato sulla base di <a href="/wit/Component_Object_Model" title="Component Object Model" wx:linktype="known" wx:pagename="Component_Object_Model" wx:page_id="416485" id="wx70">COM</a>, e definiva delle interfacce per i diversi compiti che il contenitore e l'oggetto dovevano portare a termine. Un controllo OLE2 (noto anche come OCX) era un oggetto OLE2 leggero che poteva essere integrato in un contenitore ma che non salvava grandi quantità di dati, né richiedeva menu o barre degli strumenti per funzionare.</p>

<p id="wx71">Un controllo veniva implementato da una DLL, e caricato nello spazio degli indirizzi del contenitore ospite, come ad esempio <a href="/wit/Visual_Basic" title="Visual Basic" wx:linktype="known" wx:pagename="Visual_Basic" wx:page_id="4480" id="wx72">Visual Basic</a>. Le prime versioni di Visual Basic utilizzavano una tecnologia simile chiamata <a href="/wit/Visual_Basic_Extension" class="new" title="Visual Basic Extension" wx:linktype="unknown" wx:pagename="Visual_Basic_Extension" id="wx73">Visual Basic Extension</a>, ma i controlli OCX vennero considerati migliori. Ogni OCX implementava un sottoinsieme ben definito delle interfacce OLE2 che il contenitore poteva usare per manipolare il controllo, ad esempio per spostarlo, o per fornire informazioni sul contenitore. L'OCX implementava anche un <i id="wx74">meccanismo di automatione</i> che permetteva la pubblicazioni di metodi e proprietà che potevano essere modificati, ed utilizzava un metodo complementare per restituire degli eventi al contenitore.</p>

<p id="wx75">OLE2 era molto complicato, ed il suo supporto nelle <a href="/wit/Microsoft_Foundation_Classes" title="Microsoft Foundation Classes" wx:linktype="known" wx:pagename="Microsoft_Foundation_Classes" wx:page_id="27336" id="wx76">MFC</a> era minimo, perciò Microsoft razionalizzò la specifica in modo da semplificarla, e ridenominò la tecnologia in <a href="/wit/ActiveX" title="ActiveX" wx:linktype="known" wx:pagename="ActiveX" wx:page_id="296655" id="wx77">ActiveX</a>. Anche dopo la semplificazione i controlli richiedevano neccessariamente che all'incirca 6 interfacce fondamentali venissero implementate. Microsoft, per allievare questa complessità, produsse dei wizard, delle classi base ATL, delle macro e delle estensioni al linguaggio <a href="/wit/C%2B%2B" title="C++" wx:linktype="known" wx:pagename="C++" wx:page_id="26839" id="wx78">C++</a> per semplificare la scrittura di controlli.</p>

<p id="wx79">A partire da Internet Explorer 3.0 venne aggiunta la possibilità di ospitare controlli ActiveX all'interno di contenuto HTML. Se il browser elaborava una pagina che specificava un controllo ActiveX attraverso un tag OBJECT (e una sintassi non accettata dal <a href="/wit/W3C" title="W3C" wx:linktype="known" wx:pagename="W3C" wx:page_id="4533" id="wx80">W3C</a>), avrebbe scaricato automaticamente ed installato il controllo, con intervento minimo, se non nullo, dell'utente. Ciò rese la fruizione del web "più ricca", ma venne percepita come limitante (dal momento che i controlli funzionavano solo su Windows) e come un rischio per la sicurezza, a causa del mancato intervento dell'utente. Microsoft è stata costretta ad introdurre delle misure di sicurezza per porre rimedio alle proprie mancanze. Ad esempio:</p>

<ul id="wx81">
<li id="wx82">
<p id="wx83">I pacchetti d'installazione dei controlli (file cabinet ed eseguibili) devono recare una <a href="/wit/Firma_digitale" title="Firma digitale" wx:linktype="known" wx:pagename="Firma_digitale" wx:page_id="20014" id="wx84">firma digitale</a>.</p>
</li>

<li id="wx85">
<p id="wx86">I controlli devono dichiararsi esplicitamente sicuri per attività di scripting.</p>
</li>

<li id="wx87">
<p id="wx88">Le impostazioni di sicurezza predefinite sono divenute sempre più restrittive.</p>
</li>

<li id="wx89">
<p id="wx90">Internet Explorer mantiene una "lista nera" dei controlli insicuri.</p>
</li>
</ul>

<p id="wx91">Internet Explorer, fino ad un certo momento, supportò i plugin NPAPI. I plugin che funzionavano nel browser Netscape funzionavano anche su Internet Explorer, grazie ad un piccolo controllo ActiveX implementato in un file "plugin.ocx" che svolgeva il compito di intermediario tra il browser e il plugin. Il browser caricava il controllo, e lo utilizzava per ospitare i plugin richiamati in quella pagina. Tuttavia, Microsoft affermò, ad un certo punto, che i plugin NPAPI (o l'implementazione di Internet Explorer dell'API) causavano problemi di sicurezza, e rimosse il supporto nella versione 5.5 SP2 di Internet Explorer.<sup id="_ref-0" class="reference"><a href="#_note-0" title="" wx:fragment="_note-0" wx:linktype="note" id="wx92"/></sup></p>

<p id="wx93">Le versioni successive di Internet Explorer, molto probabilmente, introdurranno un modello basato su <a href="/wit/.NET_Framework" title=".NET Framework" wx:linktype="known" wx:pagename=".NET_Framework" wx:page_id="399793" id="wx94">.NET</a> attraverso una sandbox e dei profili di sicurezza appositamente studiati per controllare i diritti assegnati a ciascun controllo.</p>

<a id="Sicurezza" name="Sicurezza"/>
</wx:section><wx:section level="2" title="Sicurezza" id="wxsec5"><h2 id="wx95">Sicurezza</h2>

<p id="wx96">È molto diffusa la convinzione, a proposito della tecnologia NPAPI, secondo la quale un plugin sia in sé più sicuro di un controllo ActiveX. Entrambi eseguono istruzioni native per la macchina con gli stessi privilegi del processo ospitante. Perciò un plugin malevolo può danneggiare un sistema tanto quanto un controllo ActiveX insicuro.</p>

<p id="wx97">Una differenza significativa tra la NPAPAI ed ActiveX è che NPAPI serve soltanto per i plugin Internet, mentre ActiveX viene usato per una grande quantità di scopi, tra cui la creazione delle applicazioni in Visual Basic. L'utente medio di Windows ha un gran numero di controlli ActiveX installati, una parte dei quali è probabilmente dichiarato "sicuro per attività di scripting", pur non essendolo in realtà. Uno qualsiasi di essi può essere usato come testa di ponte per prendere il controllo del computer dell'utente.</p>

<p id="wx98">Un'altra differenza per la NPAPI è che il software che la implementa (prima di <a href="/wit/Mozilla_Firefox" title="Mozilla Firefox" wx:linktype="known" wx:pagename="Mozilla_Firefox" wx:page_id="9444" id="wx99">Mozilla Firefox</a>, vedi più in basso) non scarica, né installa automaticamente i plugin mancanti. Un plugin mancante provocava la visualizzazione, all'interno del browser, di un'immagine composta da righe seghettate al posto del plugin. Se l'utente vi faceva click veniva indirizzato alla pagina del servizio di ricerca dei plugin, da dove poteva scaricare ed installare manualmente il plugin in piena autonomia. Sebbene si tratti di un inconveniente per l'utente, si tratta di un'importante misura di sicurezza, dal momento che impediva che il contenuto visualizzato utilizzasse il browser come vettore per il <a href="/wit/Malware" title="Malware" wx:linktype="known" wx:pagename="Malware" wx:page_id="12065" id="wx100">malware</a>.</p>

<p id="wx101">In Internet Explorer, il contenuto HTML specifica il luogo in cui deve risiedere il controllo ActiveX. Se il controllo non è già installato, IE scaricherà ed installerà automaticamente il controllo dalla sorgente specificata, fermandosi solo per mostrare la firma digitale all'utente, ed ottenerne il consenso all'inizio dell'installazione. Per controlli sicuri, questo approccio offre un meccanismo d'installazione più diretto, e minimizza la necessità di intervento dell'utente. Tuttavia, del contenuto malevolo potrebbe convincere l'utente, attraverso intelligenti tecniche di <a href="/wit/Ingegneria_sociale" title="Ingegneria sociale" wx:linktype="known" wx:pagename="Ingegneria_sociale" wx:page_id="129568" id="wx102">ingegneria sociale</a>, ad ignorare gli avvertimenti (od il loro buon senso) ed ad installare qualcosa che potrebbe arrecare danno alla propria <a href="/wit/Privacy" title="Privacy" wx:linktype="known" wx:pagename="Privacy" wx:page_id="124558" id="wx103">privacy</a> od al proprio sistema. Un gran numero di siti <a href="/wit/Spyware" title="Spyware" wx:linktype="known" wx:pagename="Spyware" wx:page_id="21141" id="wx104">spyware</a>, <a href="/wit/Adware" title="Adware" wx:linktype="known" wx:pagename="Adware" wx:page_id="317247" id="wx105">adware</a> e <a href="/wit/Malware" title="Malware" wx:linktype="known" wx:pagename="Malware" wx:page_id="12065" id="wx106">malware</a> usano questi meccanismi per distribuire contenuto eseguibile ai sistemi. Microsoft ha dovuto incrementare il livello di sicurezza predefinito per ActiveX, e deve mantenere delle liste nere di controlli dannosi, nel tentativo di mitigare i rischi.</p>

<p id="wx107"><a href="/wit/Mozilla_Firefox" title="Mozilla Firefox" wx:linktype="known" wx:pagename="Mozilla_Firefox" wx:page_id="9444" id="wx108">Mozilla Firefox</a> tenta di scegliere una via di mezzo. Se un plugin non è presente, notificherà all'utente la situazione e stabilirà una connessione sicura ad un servizio di ricerca dei plugin ospitato su mozilla.org. L'utente può permettere a Firefox di scaricare ed installare il plugin. Questo modello impedisce al contenuto visualizzato di specificare da dove debba essere scaricato il plugin - ci penserà il servizio di ricerca. Ciò permette a Firefox di presentare un meccanismo di installazione quasi del tutto immediato, ma limita la possibilità a plugin certificati e compatibili forniti da fonti affidabili. Ovviamente, questo modello considera implicitamente sicuro il risultato restituito dal servizio di ricerca dei plugin, cosa che rende necessario un livello di sicurezza più elevato sul sito che ospita il servizio stesso.</p>

<a id="Plugin_pi.C3.B9_utilizzati" name="Plugin_pi.C3.B9_utilizzati"/>
</wx:section><wx:section level="2" title="Plugin più utilizzati" id="wxsec6"><h2 id="wx109">Plugin più utilizzati</h2>

<ul id="wx110">
<li id="wx111"><a href="/wit/Adobe_Acrobat" title="Adobe Acrobat" wx:linktype="known" wx:pagename="Adobe_Acrobat" wx:page_id="367437" id="wx112">Adobe Acrobat</a></li>

<li id="wx113"><a href="/wit/Adobe_Shockwave" class="new" title="Adobe Shockwave" wx:linktype="unknown" wx:pagename="Adobe_Shockwave" id="wx114">Adobe Shockwave</a></li>

<li id="wx115"><a href="/wit/Adobe_Flash_Player" title="Adobe Flash Player" wx:linktype="known" wx:pagename="Adobe_Flash_Player" wx:page_id="1476154" id="wx116">Adobe Flash Player</a></li>

<li id="wx117"><a href="/wit/Java_Runtime_Environment" title="Java Runtime Environment" wx:linktype="known" wx:pagename="Java_Runtime_Environment" wx:page_id="1698590" id="wx118">Java Runtime Environment</a></li>

<li id="wx119"><a href="/wit/RealPlayer" title="RealPlayer" wx:linktype="known" wx:pagename="RealPlayer" wx:page_id="849116" id="wx120">RealPlayer</a></li>

<li id="wx121"><a href="/wit/QuickTime" title="QuickTime" wx:linktype="known" wx:pagename="QuickTime" wx:page_id="20892" id="wx122">QuickTime</a></li>

<li id="wx123"><a href="/wit/VLC_media_player" title="VLC media player" wx:linktype="known" wx:pagename="VLC_media_player" wx:page_id="263971" id="wx124">VLC media player</a></li>

<li id="wx125"><a href="/wit/Windows_Media_Player" title="Windows Media Player" wx:linktype="known" wx:pagename="Windows_Media_Player" wx:page_id="194275" id="wx126">Windows Media Player</a></li>
</ul>

<a id="Fonti" name="Fonti"/>
</wx:section><wx:section level="2" title="Fonti" id="wxsec7"><h2 id="wx127">Fonti</h2>

<ol class="references" id="wx128">
<li id="_note-0"><a href="#_ref-0" title="" wx:fragment="_ref-0" wx:linktype="noteref" id="wx129"><b id="wx130">^</b></a> <wx:template id="wx_t1" pagename="Template:En" page_id="121878"/>
<p id="wx131">(<span style="font-weight:bolder; font-size:80%" id="wx132"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx133">EN</a></span>) <wx:templateend start="wx_t1"/> Giannandrea, J. (<a href="/wit/4_settembre" title="4 settembre" wx:linktype="known" wx:pagename="4_settembre" wx:page_id="5252" id="wx134">4 settembre</a> <a href="/wit/2001" title="2001" wx:linktype="known" wx:pagename="2001" wx:page_id="1828599" id="wx135">2001</a>) <a href="http://www.meer.net/jg/broken-plugins.html" class="external text" wx:linktype="external" rel="nofollow" id="wx136">Microsoft non supporta più i plugin su Windows XP</a>.</p>
</li>
</ol>

<a id="Collegamenti_esterni" name="Collegamenti_esterni"/>
</wx:section><wx:section level="2" title="Collegamenti esterni" id="wxsec8"><h2 id="wx137">Collegamenti esterni</h2>

<ul id="wx138">
<li id="wx139"><wx:template id="wx_t2" pagename="Template:En" page_id="121878"/>
<p id="wx140">(<span style="font-weight:bolder; font-size:80%" id="wx141"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx142">EN</a></span>) <wx:templateend start="wx_t2"/> <a href="http://developer.mozilla.org/en/docs/Plugins" class="external text" wx:linktype="external" rel="nofollow" id="wx143">Documentazione per lo sviluppo di plugin</a> su Mozilla Developer Center</p>
</li>

<li id="wx144"><wx:template id="wx_t3" pagename="Template:En" page_id="121878"/>
<p id="wx145">(<span style="font-weight:bolder; font-size:80%" id="wx146"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx147">EN</a></span>) <wx:templateend start="wx_t3"/> <a href="http://www.mozilla.org/projects/plugins/" class="external text" wx:linktype="external" rel="nofollow" id="wx148">Homepage per della documentazione più vecchia sullo sviluppo di plugin</a></p>
</li>

<li id="wx149"><wx:template id="wx_t4" pagename="Template:En" page_id="121878"/>
<p id="wx150">(<span style="font-weight:bolder; font-size:80%" id="wx151"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx152">EN</a></span>) <wx:templateend start="wx_t4"/> <a href="http://www.mozilla.org/projects/plugins/npruntime.html" class="external text" wx:linktype="external" rel="nofollow" id="wx153">Scrittura di plugin usando Mozilla</a></p>
</li>

<li id="wx154"><wx:template id="wx_t5" pagename="Template:En" page_id="121878"/>
<p id="wx155">(<span style="font-weight:bolder; font-size:80%" id="wx156"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx157">EN</a></span>) <wx:templateend start="wx_t5"/> <a href="http://www.mozilla.org/projects/plugins/plugin-host-control.html" class="external text" wx:linktype="external" rel="nofollow" id="wx158">Un controllo ActiveX che offre supporto per i plugin</a> – Componente sostituivo per plugin.ocx, che è stato rimosso da Internet Explorer.</p>
</li>

<li id="wx159"><wx:template id="wx_t6" pagename="Template:En" page_id="121878"/>
<p id="wx160">(<span style="font-weight:bolder; font-size:80%" id="wx161"><a href="/wit/Lingua_inglese" title="Lingua inglese" wx:linktype="known" wx:pagename="Lingua_inglese" wx:page_id="2523" id="wx162">EN</a></span>) <wx:templateend start="wx_t6"/> <a href="http://news.com.com/IE+competitors+mull+ActiveX+alternative/2100-1032_3-5253504.html?tag=nl" class="external text" wx:linktype="external" rel="nofollow" id="wx163">I rivali di IE sostengono un'alternativa ad ActiveX – CNET</a></p>
</li>
</ul>
</wx:section></wx:section></div>
<div id="wx_categorylinks">
<a href="/wit/index.php?title=Speciale:Categories&amp;article=NPAPI" title="Speciale:Categories" wx:linktype="known" wx:pagename="Speciale:Categories" id="wx164">Categorie</a>: <span dir="ltr" id="wx165"><a href="/wit/Categoria:Web_browser" title="Categoria:Web browser" wx:linktype="known" wx:pagename="Categoria:Web_browser" wx:page_id="40776" id="wx166">Web browser</a></span> | <span dir="ltr" id="wx167"><a href="/wit/Categoria:Mozilla" title="Categoria:Mozilla" wx:linktype="known" wx:pagename="Categoria:Mozilla" wx:page_id="135302" id="wx168">Mozilla</a></span></div>
<div id="wx_languagelinks">
Altre lingue: <a href="http://cs.wikipedia.org/wiki/Netscape_Plugin_Application_Programming_Interface" class="external" wx:linktype="interwiki" wx:pagename="cs:Netscape_Plugin_Application_Programming_Interface" id="wx169">Česky</a> | <a href="http://en.wikipedia.org/wiki/NPAPI" class="external" wx:linktype="interwiki" wx:pagename="en:NPAPI" id="wx170">English</a></div>
</body>
<wx:templatearguments for="wx_t1"/>
<wx:templatearguments for="wx_t2"/>
<wx:templatearguments for="wx_t3"/>
<wx:templatearguments for="wx_t4"/>
<wx:templatearguments for="wx_t5"/>
<wx:templatearguments for="wx_t6"/>
</html>
