Come evitare problemi di protezione Creazione di script tra siti

Traduzione articoli Traduzione articoli
Identificativo articolo: 252985 - Visualizza i prodotti a cui si riferisce l?articolo.
Avviso
In questo articolo si applica a Windows 2000. Termina di supporto per Windows 2000 dal 13 luglio 2010.Windows 2000 End-of-Support Solution Center Ŕ un punto di partenza per la pianificazione della strategia di migrazione da Windows 2000. Per ulteriori informazioni, vedere Microsoft Support Lifecycle Policy.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Pagine HTML generate dinamicamente possono introdurre i rischi di protezione se gli input non vengono convalidati sul modo in o in modo insufficiente. ╚ possibile incorporare script dannoso all'interno di input che viene inoltrato alle pagine Web e vengono visualizzate dai browser come proveniente da una fonte attendibile. Questo problema viene definito un problema di protezione cross-site scripting. In questo articolo vengono illustrati i problemi di protezione Creazione di script tra siti, ramificazioni e prevenzione.

Informazioni

Il problema

Il problema sottostante Ŕ che molte pagine Web visualizzare l'input non convalidato. Se non viene convalidato l'input, uno script dannoso pu˛ essere incorporato all'interno dell'input. Se uno script sul lato server, quindi viene visualizzato questo input non convalidato, lo script viene eseguito nel browser come se l'elenco dei siti attendibili viene generato.

Ramificazioni

Se non viene convalidato l'input per le pagine Web dinamiche, puoi riscontrare i seguenti problemi:
  • Pu˛ essere compromessa l'integritÓ dei dati.
  • Possono essere impostati e leggere i cookie.
  • Input dell'utente pu˛ essere intercettato.
  • ╚ possibile eseguire script dannosi dal client nel contesto di origine attendibile.
Quali pagine Web sono a rischio? In sostanza, il problema riguarda la creazione di pagine dinamiche in base all'input non Ŕ stata convalidata. Esempi tipici sono i seguenti tipi di pagine Web:
  • I motori di ricerca che restituiscono risultati pagine in base all'input dell'utente.
  • Pagine di accesso che memorizzano gli account utente nel database, i cookie e cosý via e in seguito scrivono il nome utente al client.
  • Moduli Web che elaborano le informazioni relative alla carta di credito.

Prevenzione

In questa sezione vengono presentati diversi approcci alla prevenzione di attacchi di cross-site scripting protezione. Valutare la situazione specifica per determinare quali tecniche funzionerÓ meglio per l'utente. ╚ importante tenere presente che in tutte le tecniche sono convalida dei dati ricevuti da input e non lo script attendibile. Prevenzione significa in pratica, attenersi alla buona norma codifica eseguendo verifiche sull'input per le routine.

Nell'elenco che segue vengono indicati gli approcci generali per impedire attacchi di cross-site scripting:
  • Codificare l'output in base ai parametri di input.
  • Filtrare i parametri di input per caratteri speciali.
  • Output del filtro in base ai parametri di input per caratteri speciali.
Quando si Filtra o codificare, Ŕ necessario specificare un set di caratteri per le pagine Web garantire che il filtro Ŕ in corso il controllo per i caratteri speciali appropriati. I dati inseriti nelle pagine Web devono escludere le sequenze di byte che sono considerate speciali basati sul set di caratteri specifico. Un set di caratteri pi¨ diffusi Ŕ ISO 8859-1, che Ŕ stata l'impostazione predefinita nelle prime versioni di HTML e HTTP. Quando si modificano questi parametri, Ŕ necessario tenere conto problemi di localizzazione.

Codificare l'output in base ai parametri di input per caratteri speciali

Codificare i dati ricevuti come input quando si scrivono come HTML. Questa tecnica Ŕ efficacia sui dati durante l'input non Ŕ stati convalidati per qualche motivo. Utilizzando tecniche quali URLEncode e HTMLEncode, Ŕ possibile impedire l'esecuzione script dannoso.

I frammenti di codice riportato di seguito viene illustrato come utilizzare URLEncode e HTMLEncode da pagine ASP (Active Server Pages):
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
se si codifica URL e HTML, Ŕ necessario specificare la tabella codici come se fosse necessario filtrare i dati.

╚ importante notare che chiama HTMLEncode sulla stringa che sta per essere visualizzato impedirÓ qualsiasi script in essa contenuti dalla fase di esecuzione e pertanto impedisce che il problema.

Filtrare i parametri di input per caratteri speciali

Filtro di input funziona rimuovendo alcuni o tutti i caratteri speciali dall'input. Caratteri speciali sono caratteri attivare gli script generati all'interno di un flusso HTML. Caratteri speciali includono quanto segue:
< > " ' % ; ) ( & + -
				
nota che tra le singole potrebbero giustificare il filtraggio di caratteri aggiuntivi o stringhe oltre i caratteri speciali.

Sebbene il filtro pu˛ essere una tecnica efficace, sono presenti alcuni aspetti da tenere in considerazione:
  • Il filtro potrebbe non essere appropriato per alcuni input. Ad esempio, in scenari in cui si ricevono <text>input da un modulo HTML, Ŕ possibile scegliere invece un metodo quale codifica (vedere di seguito).
  • Alcuni caratteri filtrati possono essere effettivamente input richiesto per script sul lato server.
Il filtro di esempio riportato di seguito, scritto in JavaScript, riportato di seguito viene illustrato come rimuovere i caratteri speciali:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
il seguente codice elabora l'input dell'utente prima di archiviarli per un utilizzo successivo.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

Output di filtro in base ai parametri di input per caratteri speciali

Questa tecnica Ŕ simile ai filtri di input ad eccezione del fatto che filtrare caratteri vengono scritti al client. Mentre pu˛ trattarsi di una tecnica efficace, esso potrebbe presentare un problema per le pagine Web che scrive gli elementi HTML.

Ad esempio, verrebbe elimini una funzione generica che consente di rimuovere i caratteri speciali in una pagina che scrive gli elementi <TABLE>, i caratteri, ruins tag <TABLE>< e >. Pertanto, affinchÚ questa tecnica essere utile, si sarebbe filtrare solo dati passati o dati precedentemente immessi da un utente e memorizzati in un database.

Possibili fonti di dati dannosi

Mentre il problema si applica a qualsiasi pagina che utilizza input per generare dinamicamente codice HTML, di seguito sono alcuni possibili fonti di dati dannosi che consentono di controllo campione per potenziali rischi di protezione:
  • Stringa di query
  • Cookie
  • Dati inviati
  • Gli URL e pezzi dell'URL, ad esempio PATH_INFO
  • Dati recuperati da utenti che viene mantenuto in alcuni utile, ad esempio in un database

Conclusione

In conclusione, di seguito sono punti chiave da ricordare riguardanti il problema di protezione cross-site scripting:
  • Il problema riguarda la creazione di pagine dinamiche in base all'input non Ŕ stata convalidata.
  • Omissione del controllo di integritÓ sui dati di input pu˛ avere implicazioni di sicurezza impreviste. Il problema Ŕ evitabile tramite lo sviluppo di buona standard, ad esempio la convalida dell'input.
  • ╚ necessario valutare le soluzioni su una pagina, per ogni sito e anche il campo base e utilizzare una tecnica ha senso.

Riferimenti

Per ulteriori informazioni, vedere il seguente materiale informativo della Computer Emergency Response Team (CERT) presso la Carnegie Mellon University:
http://www.cert.org/advisories/CA-2000-02.html
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
253117Internet Explorer e Outlook Express che impedisce cross-site scripting problemi di protezione
253119Come analizzare il codice ASP per la vulnerabilitÓ CSSI
253120Come analizzare Visual InterDev generato codice per la vulnerabilitÓ CSSI
253121Come analizzare codice MTS/ASP per la vulnerabilitÓ CSSI

ProprietÓ

Identificativo articolo: 252985 - Ultima modifica: mercoledý 1 marzo 2006 - Revisione: 3.6
Le informazioni in questo articolo si applicano a:
  • Microsoft Active Server Pages 2.0
  • Microsoft Active Server Pages 3.0
  • Microsoft Windows 2000 Server
Chiavi:á
kbmt kbcodesnippet kbcssi kbhowto kbsecurity KB252985 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 252985
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com