How to: Revisione codice generato da Visual InterDev per la vulnerabilitÓ CSSI

Traduzione articoli Traduzione articoli
Identificativo articolo: 253120 - 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

Il seguente articolo viene descritto come identificare e corrette le applicazioni di Visual InterDev che sono soggetti a CSSI (Cross-Site Scripting problemi di protezione). Solo input non correttamente convalidato o formattato rende l'applicazione vulnerabile agli attacchi.

In questo articolo si concentra sulle Visual InterDev struttura ora controlli (DTC) e la libreria di script. Per linee guide generali riguardanti il codice ASP, vedere l'articolo della Knowledge Base:
253119Come codice ASP di revisione per la vulnerabilitÓ per CSSI

Informazioni

Il DTC InterDev Visual presentare alcune problematiche particolari per gli sviluppatori in quanto parte del codice viene generato automaticamente. Uno sviluppatore potrebbe non essere familiaritÓ con l'implementazione specifica degli oggetti script che vengono generati e le vulnerabilitÓ di essi o come migliore per risolverli. Questo articolo vengono descritti i problemi noti con il DTC diversi e vengono inoltre illustrate le opzioni possibili per l'indirizzamento tali vulnerabilitÓ.

I problemi rientrano in due categorie specifiche:
  1. DTC che vengono inseriti nello script per visualizzare i dati di un database e il database contiene input dagli utenti.
  2. DTC che vengono inseriti nello script per visualizzare o utilizzare i dati Ŕ stati inviati dal client.
In entrambi i casi, convalida corretta e la codifica dei valori di output impedisce una pagina basata su DTC venga utilizzato in un attacco CSSI.

Quando si utilizza un metodo di un controllo Design-Time che recupera le informazioni da tale DTC (ad esempio .getCaption, .getText, valore), quando il valore Ŕ stato impostato utilizzando informazioni fornito dall'utente, la stringa risultante non HTMLEncoded. Inoltre, alcuni DTC che pu˛ essere associato a un campo di database visualizzare le informazioni non elaborate dal database senza codifica. Di conseguenza, Ŕ necessario HTMLEncode questi valori durante la visualizzazione in un browser. Ad esempio:
Response.Write Server.HTMLEncode(Textbox1.value)
				
se i dati da utilizzare come parte di un URL, Ŕ invece necessario utilizzare URLEncode. Ad esempio:
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
poichÚ esistono diversi modi per codificare entrusted caratteri di codice di script, Ŕ consigliabile impostare il carattere impostato per la pagina il browser esegue il rendering in modo esplicito. Questo scopo Ŕ possibile inserire un tag di <meta> lato client in tra i tag <head> del documento. Ad esempio:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
anche ci˛ da ASP tramite la proprietÓ Response.CharSet:

<% Response.Charset= "ISO-LATIN-1" %>
				


Ecco alcuni esempi comuni:

Riduci questa tabellaEspandi questa tabella
VisualizzazioneCodice di esempio
Valore di un pulsante di DTC
Response.Write Button1.Value()
Didascalia di un controllo Design-Time di CheckBox
Response.Write CheckBox1.getCaption()
Didascalia di un controllo Label DTC
Response.Write Label1.getCaption()
Testo di un DTC ListBox
Response.Write Listbox1.getText()
Valore di un DTC OptionGroup
Response.Write OptionGroup1.getValue()
Valore di un controllo Design-Time TextBox
Response.Write Textbox1.Value()


Di seguito sono possibili soluzioni per questi esempi:

Riduci questa tabellaEspandi questa tabella
VisualizzazioneCodice di esempio
Valore di un pulsante di DTC
Response.Write Server.HTMLEncode(Button1.Value())
Didascalia di un controllo Design-Time di CheckBox
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
Didascalia di un controllo Label DTC
Response.Write Server.HTMLEncode(Label1.getCaption())
Testo di un DTC ListBox
Response.Write Server.HTMLEncode(Listbox1.getText())
Valore di un DTC OptionGroup
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
Valore di un controllo Design-Time TextBox
Response.Write Server.HTMLEncode(Textbox1.Value())


Il DTC Grid non non HTMLEncode valori recuperati da un database. Se il database richiede l'input dell'utente (ad esempio, un guestbook), Ŕ necessario HTMLEncode l'output. Questa operazione pu˛ essere effettuata facendo la scheda dati della finestra di dialogo proprietÓ griglia e digitando:
=Server.HTMLEncode([fieldname])
				
dove nomecampo Ŕ il nome di ogni campo che viene visualizzato per tale colonna. DTC la maggior parte delle automaticamente HTMLEncode recuperare i dati da un database quando visualizzazione non. Devono rendere tali controlli utilizzare del codice aggiuntivo per garantire che output a un client correttamente HTMLEncoded.

Nota: DTC Ŕ in genere automaticamente implementare la logica necessaria per mantenere il proprio stato durante round trip al server. Nel caso del controllo Design-Time TextBox ad esempio, quando le informazioni sono circolare raggiunto correttamente al server, la pagina di raccolta di script Textbox.asp HTMLEncodes il contenuto del testo casella nel processo di gestione dello stato del controllo.

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
Vedere i seguenti articoli della Knowledge Base per ulteriori informazioni:
252985How to: Prevent Cross-Site Scripting Security problemi per applicazioni Web
253119Come codice ASP di revisione per la vulnerabilitÓ CSSI
253121Come codice MTS/ASP di revisione per la vulnerabilitÓ CSSI
253117Blocco di Internet Explorer e Outlook Express Cross-Site Scripting Security problemi

ProprietÓ

Identificativo articolo: 253120 - Ultima modifica: mercoledý 29 gennaio 2014 - Revisione: 1.4
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual InterDev 6.0 Standard Edition
Chiavi:á
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 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: 253120
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.

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