Come analizzare il codice MTS/ASP per la vulnerabilitÓ CSSI

Traduzione articoli Traduzione articoli
Identificativo articolo: 253121 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

Sommario

In questo articolo viene descritto come identificare e correggere applicazioni di Microsoft Transaction Server o Active Server Pages (ASP) che sono soggetti a problemi di protezione script (CSSI) tra siti. Soltanto l'input non correttamente convalidato o formattato rende l'applicazione vulnerabile agli attacchi.

Informazioni

CSSI problemi sono sempre nel modo in che un'applicazione gestisce la convalida dei dati e formattazione, in modo che migliore Ŕ affrontato dal livello di presentazione.

Questo livello in genere verrÓ composti pagine ASP e talvolta pu˛ includere alcuni componenti che assistono nel rendering del codice HTML della pagina ASP da visualizzare.

In quest'ultimo caso Ŕ importante notare che sebbene l'applicazione deve eseguire le stesse operazioni per impedire stesso CSSI come un'applicazione ASP, l'implementazione fisica comporta parte il codice di convalida, formattazione da eseguire nelle pagine ASP e alcuni nel componente. Per informazioni dettagliate su CSSI e ASP, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
253119Come analizzare il codice ASP per vulnerabilitÓ CSSI
La procedura seguente consente di identificare e correggere le applicazioni ASP soggetti a CSSI:
  1. Cercare di ASP o componente codice che genera codice HTML da visualizzare. Esistono due scenari tipici:
    • Il componente crea e restituisce una stringa HTML ASP verrÓ scritto direttamente alla risposta.
    • Il componente chiama Response.Write internamente per scrivere direttamente la pagina. In genere il riferimento all'oggetto risposta Ŕ ottenuto da ObjectContext mediante una chiamata a GetObjectContext.Item("Response").
  2. Consente di determinare se l'output HTML include i dati dell'applicazione. Questi dati possono provenire da varie origini, ad esempio database, file, i cookie, altre variabili oggetto e cosý via.
  3. Consente di determinare una soluzione appropriata. Dover trovare ASP o componente di codice che genera HTML utilizzando alcuni input, Ŕ necessario determinare una soluzione appropriata per l'applicazione specifica. Soluzioni includono (ma non sono limitati a) convalida/filtraggio dei dati non validi o la codifica.

Linee guida per la formattazione

Queste linee guida consentirÓ di identificare la posizione in cui affrontare la formattazione in modo appropriato.

Quando la scrittura di informazioni su una pagina, Ŕ necessario che i dati specifici dell'applicazione necessario HTMLEncoded. ╚ importante non che HtmlEncode tag che si intende finiscono nella pagina HTML. Di conseguenza, se le funzioni del componente restituiscono HTML, il HTMLEncode operazione deve essere in esse contenute eseguita.

Per HTMLEncode una stringa da un componente, Ŕ necessario un riferimento all'oggetto server ASP. ╚ possibile ottenere questo riferimento dall'insieme ObjectContext.Items MTS:
sGoodHTML = GetObjectContext.Item("Server").HTMLEncode(sRawData) 
				
esempio : il codice genererÓ le righe della tabella con i valori di un recordset. Questo codice non codifica l'output:
Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oRecordset("FirstName") & "</TD>"
     sHTML = sHTML & "<TD>" & oRecordset("Address") & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop
				
quando questo codice Ŕ fissa, notare che i valori stessi sono di HTMLEncoded, anzichÚ l'intera stringa HTML:
Dim oServer As ASPTypeLibrary.Server

Set oServer = GetObjectContext.Item("Server")

Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("FirstName")) & "</TD>"
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("Address")) & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop

Set oServer = Nothing
				
nota l'utilizzo del riferimento all'oggetto intermedio oServer . Questo Ŕ incluso per sfruttare l'associazione anticipata e per evitare la risoluzione di ogni volta che la ricerca di ObjectContext.Item. Per dichiarare un oggetto come ASPTypeLibrary.Server, Ŕ necessario includere un riferimento a "Microsoft Active Server Pages Object Library".

Considerare quanto segue:
  • I componenti aziendali non devono chiamare HTMLEncode, (a meno che non sono inoltre eseguono il rendering HTML). Questa Ŕ un'attivitÓ del livello presentazione.
  • In genere, componenti mediante HTMLEncode o uno qualsiasi degli oggetti ASP dovrebbero eseguire fisicamente sul computer stesso come Internet Information Server (IIS).
  • Soluzioni includono, ma non sono limitati a, formattazione e convalida i parametri di input parametri di input.

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:
252985Come evitare problemi di protezione script tra siti per le applicazioni Web
253120Come analizzare Visual InterDev generato codice per la vulnerabilitÓ CSSI
253117Come evitare vulnerabilitÓ di Internet Explorer e Outlook Express CSSI

ProprietÓ

Identificativo articolo: 253121 - Ultima modifica: martedý 4 febbraio 2014 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Transaction Services 2.0
Chiavi:á
kbnosurvey kbarchive kbmt kbcssi kbhowto KB253121 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: 253121
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