PDA

View Full Version : [C#] Webbrowser: bloccare domini


HRBF
23-11-2011, 12:56
Buongiorno a tutti.

Sto implementando un semplice browser web in C# che dia la possibilità all'utente di navigare all'interno di un sito. Ho utilizzato il controllo WebBrowser e fin qui nessun problema.

Vorrei dei consigli da voi per fare in modo che l'utente possa accedere solo alle pagine che appartengono ad un certo dominio. Se l'utente clicca su un link che appartiene ad un altro dominio, visualizzo una immagine o una stringa del tipo "Pagina non accessibile".

Ho pensato a 3 soluzioni:
- File degli host
- Firewall
- Monitorare la porta 80 e bloccare le connessioni che voglio io

Le prime due soluzioni purtroppo non vanno bene al mio caso perchè io vorrei specificare il dominio accessibile e bloccare le connessioni a tutti gli altri. Il file degli host e il firewall come sapete fanno il contrario.
La terza soluzione potrebbe andare bene ma mi sembra un po troppo laboriosa, non vorrei perdere più tempo nell'implementare questa funzione di quello che ho impiegato tirando in piedi il browser.
Conoscete per caso un firewall gratis che faccia al caso mio? Oppure quali altre soluzioni potrei attuare?
Grazie

Ken1986
26-11-2011, 07:32
Se stai cercando un firewall non sei nella sezione adatta

dierre
26-11-2011, 09:55
Scusa ma una semplice analisi con regexp dell'url che si trova sulla barra degli indirizzi? Quando clicca invio controlli che il dominio sia quello che dici tu.

HRBF
27-11-2011, 15:43
Scusa ma una semplice analisi con regexp dell'url che si trova sulla barra degli indirizzi? Quando clicca invio controlli che il dominio sia quello che dici tu.

Ciao, scusa non ho specificato nel mio primo post: il web browser non ha barra degli indirizzi, è semplicemente una finestra in full screen con solo i bottoni avanti, indietro e home. L'utente non può e non deve avere la possibilità di cambiare url, può solamente navigare all'interno di un sito web definito a priori. Di tale sito web l'utente può accedere solo alle pagine che appartengono al dominio del sito...tutti i link che fanno riferimento a pagine esterne non devono essere visualizzabili e devono essere bloccate. Hai suggerimenti su come posso fare? Con il controllo WebBrowser è possibile recuperare il link sul quale l'utente ha cliccato in modo tale da analizzarlo e verificare l'appartenenza al dominio?

Grazie

HRBF
27-11-2011, 15:47
Se stai cercando un firewall non sei nella sezione adatta

Ciao, il firewall era una delle soluzioni che ho pensato, preferirei farlo via codice, sempre se è possibile, in modo da non avere altre cose da installare e configurare oltre all'applicazione. Avresti altri suggerimenti?

dierre
27-11-2011, 20:29
Mai provato ma mi verrebbe da dire questo

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onlocationchanged.aspx

HRBF
29-11-2011, 22:05
Ciao ti ringrazio, mi hai indirizzato sulla strada giusta. Ho risolto con questo:

http://msdn.microsoft.com/it-it/library/ms161352.aspx

L'evento Navigated viene richiamato prima di caricare una pagina. Castando l'oggetto sender a WebBrowser è possibile recuperare il dominio a cui appartiene la pagina che sto per caricare. Se la pagina non deve essere visualizzata cancello l'evento con e.Cancel = true :)