Domanda

Snoop permette di guardare dentro le proprietà degli elementi di applicazione e di cambiamento. La sua una grande risorsa per gli sviluppatori, ma può essere un problema di sicurezza, in alcuni casi, come quando abbiamo gli utenti che amano guardare in luoghi dove non dovrebbero essere alla ricerca. C'è un modo di fare qualcosa per le applicazioni di blocco come Snoop da "snooping" la vostra applicazione?

E se non c'è modo di bloccarla, cosa mi consiglia di fare per ridurre al minimo i rischi di sicurezza?

Snoop è un'utility che permette di sfogliare albero visuale di un'applicazione WPF e visualizzare e modificare le proprietà. E 'molto utile quando si sta cercando di eseguire il debug qualcosa e non hai idea di cosa sta succedendo. È possibile trovare maggiori qui .

Grazie.

È stato utile?

Soluzione

Con l'implementazione della sicurezza in modo corretto. Se la "sicurezza" può essere contrastato con uno strumento come Snoop, allora si sta facendo male.

Supponiamo c'è un comando che solo determinati utenti possono eseguire. Sembra che l'unico luogo che stai far rispettare questo è al livello di interfaccia utente (disabilitando il tasto corrispondente, per esempio). Stando così le cose, hai ragione - ho potuto facilmente usare Snoop per attivare il pulsante ed eseguire il comando. Ma si dovrebbe essere far rispettare i vincoli di sicurezza sul server, o forse nella logica esecuzione dei comandi se si dispone di alcun server. In sostanza, la sicurezza dovrebbe essere attuato il più vicino alla cosa si sta cercando di proteggere il più possibile. Sicurezza a livello di interfaccia utente è solo per comodità dell'utente.

Altri suggerimenti

V'è in realtà un modo per rilevare se l'applicazione è in fase di "intercettati" da parte del programma di Snoop. La soluzione darò non è un proiettile d'argento, e se qualcuno vuole davvero curiosare la vostra applicazione, avrebbero dovuto modificare il codice sorgente snoop (si tratta di un progetto open source).

Cosa curiosare in realtà non fa altro che inietta un assembly nella vostra applicazione, e l'assemblaggio iniettato esamina ricorsivamente le applicazioni albero visiva a partire dalla radice. In altre parole, curiosare in realtà corre all'interno dell'applicazione. Detto, la soluzione è quella di generare un evento quando il complesso viene iniettato snoop nell'applicazione.

In primo luogo, è necessario sottoscrivere l'evento in qualche catena di montaggio caricato nell'applicazione (preferibilmente il begginging):

AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);

Poi, si dovrebbe implementare il gestore un po 'come questo:

        void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
    {
        if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
            MessageBox.Show("hey you, stop snooping");//and shut down your application.
    }

Si sarebbe probabilmente bisogno di migliorare questa soluzione per soluzione reale silver bullet, ma almeno questa soluzione sarà sicuramente fermare l'ultima versione corrente di Snoop essere eseguito come è (senza il codice modificato). La soluzione migliore sarebbe quella di verificare che non assembly esterni vengono iniettati nell'applicazione.

Tuttavia, Kent è ancora proprio nel fatto che un programma di utilità come Snoop non dovrebbe causare vulnerabilità di sicurezza dal momento che la sicurezza non deve essere implementata a livello di interfaccia utente. Ma almeno questo mostra come impedire alla gente di "snooping" la vostra applicazione.

Grandi risposte per una domanda molto buona,

Voglio aggiungere un esempio della password che non dovrebbe mai essere salvato nel vostro DataContext, come il check Snoop anche la DataContext dell'interfaccia utente, quindi se si utilizza il diritto di controllo PasswordBox vi accorgerete che non si possono legare la password proprietà, che significa anche se si snoop l'applicazione non è possibile ottenere la password in quanto non viene salvato in qualsiasi proprietà

Ma abbiamo trovato molte persone che cercano di creare un lavoro in giro (aiutanti, i comportamenti, UserControl ...) per legare la password, ma si dimentica che Snoop può ottenere così

Quindi, il server non deve mai fidati del tuo cliente, ogni volta che si deve controllare il privilegio destra (come siamo in grado di fiutare la richiesta del client utilizzando Fiddler per exp poi ricostruire una richiesta custome di by-pass di sicurezza client)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top