[ASP.NET 2.0] Protezione del codice sorgente VB e C#

Con la pubblicazione di un’applicazione web ci si pone il problema di proteggere il codice sorgente dell’applicazione stessa, dato che l’applicazione è interamente accessibile all’amministratore del sito Internet.

Infatti, per un’applicazione commerciale non è auspicabile che chi ha accesso alle cartelle dell’applicazione possa in qualche modo modificare l’applicazione (soprattutto nella parte relativa al sorgente, più che nella parte relativa alla presentazione delle pagine) o, peggio, utilizzare direttamente il codice sorgente per costruire un’applicazione commerciale analoga.

Con Visual Studio 2005 e ASP.NET 2.0 questo obiettivo è facilmente raggiungibile, come evidenziato dalle seguenti istruzioni:

  • dal menu “Genera” scegliere la voce “Pubblica sito web”; comparirà una maschera per la scelta della destinazione di pubblicazione e di altre informazioni;
  • è possibile pubblicare il sito in una cartella locale (ad esempio per test, prima della pubblicazione definitiva), semplicemente cambiando il percorso di destinazione. Si consiglia di creare una cartella vuota appositamente per lo scopo di depositare i file destinati alla pubblicazione;
  • in alternativa è possibile fare click sul pulsante “…” e scegliere se pubblicare in una cartella locale (scegliendo la cartella stessa), su IIS locale, in FTP o su un sito remoto (richiede le estensioni del server di FrontPage);
  • dopo aver inserito le informazioni sulla destinazione, attivare la casella relativa a “Attiva nome sicuro su assembly precompilati”, poi selezionare “Utilizza un contenitore di chiavi” e inserire un nome a scelta (es. “chiavi”), poi confermare con OK.

Nella finestra di output verranno visualizzate le varie fasi di pubblicazione. Nel caso in cui i file siano già presenti nella cartella di destinazione, comparirà una richiesta di conferma di eliminazione dei file già presenti.

Verificando i risultati, si troverà che tutti i file con estensione “.vb” (destinati a mantenere “in chiaro” il codice sorgente in Visual Basic delle pagine) sono spariti, così come è sparita la cartella App_Code, preposta a contenere tutte le classi generali (analoghe ai moduli globali di VB6).

Al loro posto è comparsa invece una cartella “bin” contenente le DLL che sono il risultato della compilazione dei file di codice sorgente di Visual Basic di tutte le pagine del sito.
Ovviamente non è possibile compilare le pagine “.aspx” il cui sorgente, costituito da tag HTML, rimane visibile.

Certamente, però, la compilazione del codice VB permette di nascondere all’utente e all’amministratore del sito tutte quelle funzionalità più importanti che caratterizzano il comportamento dell’applicazione web.

Oltre alle tecniche finora spiegate, native di Visual Studio, mi è stato segnalato da Antonio Catucci (aka “tdj”) un suo post relativo a un add-in per Visual Studio, scaricabile gratuitamente: Visual Studio 2005 Web Deployment Project. Per approfondimenti, inoltre, è possibile consultare l’articolo MSDN “Using Web Deployment Projects with Visual Studio 2005“.

Annunci

Pubblicato il 6 febbraio 2008, in ASP.NET, Sicurezza con tag , , . Aggiungi il permalink ai segnalibri. 4 commenti.

  1. Ho un problema che non riesco a risolvere.
    Utilizzo il sistema che hai descritto, però nel sito di produzione c’è una cartella con le immagini dei prodotti che deve essere aggiornata da terze persone che si trovano in un’altra sede e utilizzano le estensioni di Front Page per accedere.
    Ogni volta che pubblico, la suddetta crtella risulta in seguito bloccata e non accetta più modifiche o aggiunta file. Occorre rinominarla e quindi torna a funzionare. Nel sito di sviluppo la cartella non esiste, perchè quando c’era succedeva che durante la pubblicazione i file (immagini prodotto inserite dal negoziante) venivano sosituite dalle mie.
    Nella versione Visual Studio 2001 c’era la possibilità di escludere dal sito cartelle e file (con il tasto destro, poi apparivano in grigetto), ma con il 2005 non esiste più.
    Un aiutino?

    Mi piace

  2. Anche in VS 2005 c’è ancora: tasto destro sul file o sulla cartella (in Esplora soluzioni) e poi scegli dal menu “Escludi dal progetto”. Ho fatto una prova e l’oggetto sparisce da esplora soluzioni.
    Se questo non risolve il tuo problema fammi sapere che approfondiamo il problema e troviamo una soluzione.

    Mi piace

  3. Ciao,
    io non riesco ad utilizzare il contenitore di chiavi.
    Nella pubblicazione del sito mi dà l’errore di compilazione
    “Error 2 Errore di crittografia durante la firma dell’assembly ***********’ – ‘Il nome del contenitore di chiavi ‘chiavi’ non esiste.'”

    Ho crato quindi un contenitore di chiavi “chiavi” tramite il progr. asp in dos…ma ancora nulla.
    Qualche idea?

    Mi piace

    • Anche ho questo errore:
      “Errore durante l acreazione del manifesto dell’assembly – ‘Il nome del contenitore di chiavi ‘chiavi’ non esiste.’”

      Come si può risolvere ?
      Grazie
      Salvio

      Mi piace

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: