2009-09-11 16 views
5

Utilizzando C# come si determina se un URL è un URL intranet? Vorrei che qualche codice faccia qualcosa se un URL è una intranet uno contro il pubblico.Come capire se un URL è un URL intranet?

+4

è importante, SLaks? Penso che questa sia una domanda ragionevole ... – Atmocreations

+0

Ci aiuterebbe a dare una risposta migliore, specialmente se sapessimo che tipo di intranet cercava. – SLaks

risposta

8

non si può sapere implicitamente. se gli URL della tua intranet sembrano nomi di dominio completi, è difficile dirlo. l'unico modo per dire è di interrogare due server DNS diversi (il tuo e uno pubblico). Se entrambi restituiscono lo stesso risultato, allora è un dominio internet. se il server DNS pubblico non è in grado di risolvere l'indirizzo, è molto probabilmente un dominio intranet.

+0

Ho visto configurazioni insane in cui il sito intranet è chiamato qualcosa come "intranet.com", che è internamente risolto alla intranet, ma è un vero dominio live di proprietà di una società arbitraria all'esterno. Dovrai verificare non solo che si risolve da entrambi i server DNS, ma che risolve la stessa cosa. – rmeador

+0

Questa soluzione (risolvendo il nome in un IP) funzionerà se si ha una conoscenza a priori di cosa sia un IP interno rispetto a un IP esterno. Se aggiungi un po 'di configurazione (un elenco di intervalli IP validi per l'intranet) hai risolto il problema. Non è una soluzione carina, ma funzionerà. –

+0

Un altro problema è se l'host si risolve in un IP instradabile perché l'organizzazione ha IP di classe A validi che utilizza come IP intranet. Rende la vita molto dura con .Net e simili. – user7116

8

Conoscete le sottoreti interne (in termini di indirizzi IP)? In tal caso, risolverei semplicemente il nome host e verificherò se è interno in questo modo.

0

In generale, non esiste un modo affidabile per indicare un URL intranet da un URL Internet. Se la rete intranet è disponibile per il tuo programma, sarà simile a Internet e, in caso contrario, non saprai ancora se l'URL deve essere un URL intranet funzionante o è solo un URL Internet (temporaneamente) interrotto .

Avrete bisogno di alcune conoscenze speciali, come i nomi di dominio o gli IP dei server che forniscono l'intranet, per distinguerli.

0

Se si desidera determinare se un determinato URL è un URL intranet in qualsiasi azienda (al contrario di specializzare il codice per una determinata azienda), vi auguro buona fortuna.

Di solito, ma non sempre, gli URL itranet non hanno un dominio di primo livello (dominio di primo livello, ad esempio .com). Tuttavia, ho visto alcuni che fanno.

Quasi sempre (AFAIK), i domini intranet verranno risolti in un indirizzo IP simile all'indirizzo corrente del computer. Si noti che non ho detto la stessa sottorete; le grandi intranet possono avere più sottoreti. Si noti inoltre che se il computer non si trova in una intranet aziendale, lo corrisponderà a nomi di dominio regualr che si risolvono in indirizzi IP simili. (A meno che il computer sia dietro NAT)

+0

Uso sempre .local (http://en.wikipedia.org/wiki/.local) per gli spazi dei nomi interni. Ad esempio, supermegacorp.com sarebbe supermegacorp.local internamente. Se tutti lo facessero, la soluzione a questo problema sarebbe banale. Ovviamente .local potrebbe non funzionare per tutti, tuttavia non ho ancora trovato un posto dove non funzionerebbe. – Bryan

+0

Non ho mai visto ".local" usato prima. Ho visto un ambiente in cui la rete intranet è ospitata su sottodomini del nome di dominio esterno della società. – SLaks

7

se l'url si risolve in un indirizzo tcpIp che è uno degli indirizzi IP messi da parte come indirizzo IP privato, allora è sicuramente sulla tua Intranet. questi sono

  1. 10.xxx.xxx.xxx,
  2. 172.16.xxx.xxx attraverso 172.31.xxx.xxx e
  3. 192.168.xxx.xxx

se risolve qualsiasi altro IP affrontarlo forze essere ancora nella Intranet, ma ha un indirizzo IP pubblico ed è quindi potenzialmente accessibile dall'esterno Intranet

+0

+1, Come descritto in un commento ad un'altra risposta, alcune organizzazioni, come si fa notare, usano IP instradabili come IP intranet. Abbastanza confusamente. La sicurezza di Net si basa in gran parte su questi quando si utilizzano condivisioni di rete. Se sei abbastanza fortunato da avere quegli IP, allora trovo che sia un modo valido per controllare. – user7116

+0

Questa soluzione si interromperà anche per IP6. Sebbene IP6 abbia riservato l'indirizzo IP privato, la raccomandazione generale è di non usarli per evitare la traduzione degli indirizzi. – Reza

-1

Per aggiungere a ciò che altri hanno detto, Intranet non ha nessuno dei domini di primo livello nel proprio indirizzo. Ho lavorato in alcune aziende e tutte le Intranet erano qualcosa di simile:

http://developments/admin - si noterà che non c'è alcun dominio di primo livello a tutti. Quindi, si risolve in un computer all'interno della rete. Di nuovo, come suggerisce il nome, non è probabile che accederai oltre l'ambiente aziendale.

+0

Come menzionato in risposta al post di Joel. Questo non è sempre vero. – Bryan

0

Non sono un programmatore C#, quindi non posso offrirvi il codice, ma il metodo di base implicherebbe il confronto della parte hostname dell'URL con quella dei server nella vostra intranet.Oppure, se l'URL utilizza solo un IP e non un nome DNS, confronta l'IP con quello dei tuoi server intranet.

Rompere l'URL utilizzando la manipolazione di stringhe - anche se immagino che C# debba avere una classe URL che eseguirà questa operazione per te - ed estrarre il nome host, confrontarlo con un elenco di server.

0

Il semplice, e non perfetto, ma funziona per il caso dell'80% è semplicemente controllare se l'URL ha un periodo in esso. So che gli URL Intranet possono essere pienamente qualificati, ma nella mia esperienza (in Microsoft) molti non lo fanno, e questo funziona abbastanza bene.

0

È possibile interrogare Internet Explorer per verificare se il dominio corrisponde all'elenco dei domini intranet accettati.

chiave di registro è HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ZoneMap \ Domini

C'è se il dominio ha un valore per 1 per il protocollo si riterrà un dominio intranet. Dovrai eseguire un nslookup per raccogliere l'indirizzo "reale".

+0

* interrogare internet explorer * No, IE non tradirà Microsoft anche se lo torturi. ;) –