Implementare logica di sicurezza

sabato 13 ottobre 2012 - 09.32
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

andrestu Profilo | Expert

Salve a tutti,
consapevole del fatto che non esiste un sistema sicuro in assoluto soprattutto nel mondo informatico, sto cercando di implementare una semplice logica di sicurezza per proteggere le mie pagine Aspnet, senza entrare troppo nel dettaglio cerco di porvi il mio quesito.
Ho definito una classe "PippoPage" che deriva da System.Web.UI.Page, ogni mia pagina del progetto deriva dalla classe "PippoPage". Compilo il progetto e pubblico su web.
A questo punto ammettiamo che qualche furbone venga in possesso del mio progetto compilato vorrei capire quanto sia facile (sempre che si possa fare) inserire nel progetto una DLL che contiene un classe chiamata ugualmente "PippoPage" e fare derivare tutte le pagine da questa classe. in poche parole sostituire la logica di sicurezza...
Si accettano suggerimenti in merito... comprendo che se qualcuno utilizza un certo si sistema di sicurezza non viene di certo a spifferarlo ai quattro venti, ma considerate che discuterne significa capire anche quanto sia valida la vostra implementazione.

Aggiungo altro:
sempre partendo dal progetto compilato si potrebbe bypassare la logica di sicurezza procedendo in questo modo:
cambiando per ogni pagina del progetto la proprietà Inherits="..." della direttiva di pagina aspx in questo modo si perderebbe tutta la logica (code behind) per ogni pagina ma con un reflector, se il codice non è criptato, si potrebbe copiare tutta la logica per ogni pagina nelle nuove pagine inserite, sempre che si possa fare... che ne pensate?

bludev Profilo | Newbie

>Salve a tutti,
>consapevole del fatto che non esiste un sistema sicuro in assoluto
>soprattutto nel mondo informatico, sto cercando di implementare
>una semplice logica di sicurezza per proteggere le mie pagine
>Aspnet, senza entrare troppo nel dettaglio cerco di porvi il
>mio quesito.
>Ho definito una classe "PippoPage" che deriva da System.Web.UI.Page,
>ogni mia pagina del progetto deriva dalla classe "PippoPage".
>Compilo il progetto e pubblico su web.
>A questo punto ammettiamo che qualche furbone venga in possesso
>del mio progetto compilato vorrei capire quanto sia facile (sempre
>che si possa fare) inserire nel progetto una DLL che contiene
>un classe chiamata ugualmente "PippoPage" e fare derivare tutte
>le pagine da questa classe. in poche parole sostituire la logica
>di sicurezza...
>Si accettano suggerimenti in merito... comprendo che se qualcuno
>utilizza un certo si sistema di sicurezza non viene di certo
>a spifferarlo ai quattro venti, ma considerate che discuterne
>significa capire anche quanto sia valida la vostra implementazione.
>
>Andrea Restucci - Web Developer

Se per "sicurezza" ti riferisci alla protezione del tuo software, non credo ci sia molto da fare. Se con Visual Studio crei un progetto tipo "ASP.NET web Application" o simili, quando pubblicherai VS copierà in remoto solo le pagine ASPX, mentre il relativo codice (VB o C# che sia) viene compilato e inserito in una DLL, che verrà copiata nella cartella "bin" del sito web remoto. Questa DLL contiene il tuo codice compilato nella forma MSIL, un meta-linguaggio facilmente decompilabile.
Credo quindi che il perimetro di sicurezza ideale per bloccare i malintenzionati sia quello di impedire l'accesso ai file presenti sul server web, te escluso. Se questo non dovesse essere possibile (perché magari il server web è di proprietà del cliente) potresti valutare di fornire servizi "sito web + server incluso", dove metti a disposizione un tuo server, al quale chiaramente non dai la possibilità di accedere a terzi.
---
Fabio Turrin - Bludev - http://www.bludev.it/

andrestu Profilo | Expert

Ciao bludev,

> mentre il relativo codice (VB o C# che sia) viene compilato e inserito in una DLL, che verrà copiata nella cartella "bin" del sito web remoto. Questa DLL contiene il tuo codice compilato nella forma MSIL, un meta-linguaggio facilmente decompilabile.
ma se il codice viene compilato tramite un offuscatore non è motlo facile da comprendere giusto? ovviamente il modo per decriptarlo si trova sempre ma almeno si complica la vita al "furbone" di turno riducendo notevolmente il rischio.

> Credo quindi che il perimetro di sicurezza ideale per bloccare i malintenzionati sia quello di impedire l'accesso ai file presenti sul server web, te escluso.
Beh si questo a prescindere, il mio era un tentativo di fornire una utleriore minima sicurezza all'origine, anche perchè se consideriamo solo l'ipotesi di bloccare l'accesso ai file, sia che il server sia tuo o no, qualsiasi sistema collegato alla rete per definizione non si può ritenere "sicuro" quindi non credo che attuando solo questa logica sei in una botte di ferro, ovviamente se il server è tuo i rischi si abbassano notevolmente...

Gluck74 Profilo | Guru

>A questo punto ammettiamo che qualche furbone venga in possesso
>del mio progetto compilato vorrei capire quanto sia facile (sempre
>che si possa fare) inserire nel progetto una DLL che contiene
>un classe chiamata ugualmente "PippoPage" e fare derivare tutte
>le pagine da questa classe. in poche parole sostituire la logica
>di sicurezza...
credo non si possa per via delle publickey, ma non sono sicuro.

>cambiando per ogni pagina del progetto la proprietà Inherits="..."
>della direttiva di pagina aspx in questo modo si perderebbe tutta
>la logica (code behind) per ogni pagina ma con un reflector,
>se il codice non è criptato, si potrebbe copiare tutta la logica
>per ogni pagina nelle nuove pagine inserite, sempre che si possa
>fare... che ne pensate?
non ho capito.........
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

andrestu Profilo | Expert

> non ho capito........


cioè praticamente la proprietà Inherits che si imposta in cima ad ogni pagina aspx <%@ Page Title="" ... Inherits="tipo della pagina compreso di namespace" %> se viene cambiata con un altro tipo che inserisco nel progetto a questo punto posso sostituire la logica per ogni pagine anche se non ha molto senso perchè perderei parte del progetto molto rilevante quindi come non detto...

Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5