È necessario crittografare un campo nascosto dello stato di visualizzazione ASP.NET quando si utilizza il certificato SSL?

5

Se si dispone di un certificato SSL per un sito Web, è necessario rendere il ViewState più difficile da decodificare. Senza alcun ulteriore sviluppo, sembra che ASP.NET lo codifichi come una stringa 64 di base. Ho trovato alcuni esempi di codice per decodificare facilmente questo campo nascosto "__VIEWSTATE". SSL non cripta questo (insieme ad altre cose) per te?

    
posta MacGyver 04.08.2011 - 20:53
fonte

3 risposte

10

Devi distinguere due tipi di attaccanti:

SSL è utilizzato durante il trasporto per impedire a una terza persona di leggere e modificare i dati trasmessi.

L'utente che invia i dati al server e ottiene le risposte dal server, può ovviamente vedere e modificare i dati in qualsiasi modo desideri. Quindi l'utente può modificare il campo modulo nascosto contenente lo stato di visualizzazione. L'escape di Base64 non offre alcuna protezione qui, è solo un modo per garantire che i dati binari non siano incasinati dalle conversazioni dei set di caratteri.

Quindi, nel probabile caso in cui lo stato della visualizzazione contenga informazioni affidabili, che un utente malintenzionato non deve modificare, è necessario abilitare la crittografia e firmare per esso.

    
risposta data 04.08.2011 - 21:12
fonte
2

"Encrypt" è diverso da "encode". BASE64 non è un algoritmo di crittografia.

ViewState contiene informazioni "binarie": informazioni che vanno oltre il semplice testo. Dal momento che non puoi (o non dovresti) avere informazioni binarie sui tag HTML META o sui cookie HTTP, i dati binari devono essere codificati in un formato di testo. La codifica BASE64 è una scelta popolare, quindi è semplice codifica esadecimale.

Si noti che la variabile ViewState è anche codificata ASN.1. Contiene numerosi campi di lunghezza variabile, che sono "taggati" con informazioni sul tipo e lunghezza codificati.

All'interno di tutto ciò, la variabile ViewState contiene informazioni crittograficamente sicure, come gli ID di sessione, resistenti alle manomissioni, in modo che gli hacker non possano manipolare gli ID di sessione di una persona per hackerare la sessione di qualcun altro. Ecco perché vedi i decodificatori di ViewState là fuori: a volte gli operatori di siti web non usano i primati crittografici giusti e espongono gli interni di Viewstate alla manipolazione da parte di hacker.

Come altre risposte hanno detto, SSL crittografa solo il traffico sul cavo di rete, in modo che le persone non possano origliarlo. Ovviamente, deve essere decodificato dalla tua parte in modo che il browser esegua il rendering della pagina e sul lato server quando crea la pagina.

    
risposta data 05.08.2011 - 00:34
fonte
0

Anche ASP.NET 2.0 o versioni successive invia una chiave MAC che funge da hash e aiuta a prevenire manomissioni, vedi questa pagina per i dettagli. Questo imposta la barriera per attaccare un po 'più in alto rispetto a una semplice stringa codificata in base64.

    
risposta data 05.08.2011 - 00:15
fonte

Leggi altre domande sui tag