Sto lavorando a un sito Web (sviluppato in ASP.NET con C#) che è stato trasmesso a me. Come sto lavorando attraverso il sito, ho notato la maggior parte del sito ha questo tipo di codice in esso:Nascondere i controlli come una forma di sicurezza Web, suggerimenti per migliorare?
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
Tutto questo è in genere fatto nel code-behind del sito (nel metodo Page Load). Essenzialmente, questo è stato messo in atto per impedire ad un utente non connesso di accedere ai componenti (la regola per il sito è che un utente non registrato non dovrebbe poter vedere alcuna parte del sito fino al momento in cui si effettua il login). Il modo sopra funziona ... ma sembra piuttosto costoso dover controllare sempre se l'utente ha effettuato l'accesso e quindi girare allo stato corretto per tutti quei componenti.
C'è un modo diverso che questo problema possa essere affrontato. Solo a pensarci su/ricerca, ho pensato che forse ci sarebbe stato un modo per reindirizzare alla home page se un utente non ha effettuato l'accesso. Inoltre, potrei estendere una pagina base che farebbe questo per qualsiasi pagina che estende la pagina di base. Tuttavia, le mie conoscenze in questo settore sono limitate, quindi il mio suggerimento potrebbe non funzionare.
Cosa può suggerire? Qualcosa di meglio? Cosa c'è abbastanza buono?
Sebbene questo approccio sia decisamente consigliato per la maggior parte delle situazioni, è impossibile che sia più veloce. In che modo l'impostazione di alcune variabili booleane può essere ovunque vicino al sovraccarico dell'emissione di un roundtrip 301 al browser? Stai parlando di nanosecondi di tempo del processore rispetto a centinaia di millisecondi di latenza di rete e del server che gestisce più richieste del browser. E Response.End() genera una ThreadAbortException, che genera il proprio overhead. – womp
Giusto per chiarire però - proteggere le pagine che richiedono * solo * l'accesso autenticato dovrebbe essere fatto in questo modo. Non sono sicuro se l'OP lo richiede o meno. – womp
Il motivo per cui questo è più veloce, è che nessuno dei Metri di Page-Cycle dopo OnInit viene chiamato in questo modo. Risparmio di tempo nella CPU. E a tutti gli effetti, un utente in caso di mancato accesso deve attendere un ulteriore roundtrip e il tempo associato ad esso. – TJMonk15