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?
risposta
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.
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
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à. –
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
Conoscete le sottoreti interne (in termini di indirizzi IP)? In tal caso, risolverei semplicemente il nome host e verificherò se è interno in questo modo.
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.
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)
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
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
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
- 10.xxx.xxx.xxx,
- 172.16.xxx.xxx attraverso 172.31.xxx.xxx e
- 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
+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
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
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.
Come menzionato in risposta al post di Joel. Questo non è sempre vero. – Bryan
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.
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.
È 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".
* interrogare internet explorer * No, IE non tradirà Microsoft anche se lo torturi. ;) –
- 1. controlla se una stringa è un URL
- 2. Scopri se un URL è rotto?
- 3. Come verificare rapidamente se l'oggetto NSString è un URL valido?
- 4. Come posso verificare se un URL è assoluto usando Python?
- 5. Come verificare se una stringa è un URL HTTP valido?
- 6. Come URL codificare un URL in JSP?
- 7. Controllare se un URL è rotto in Javascript
- 8. Come costruire un Url?
- 9. Come verificare se esiste ancora un ALAsset usando un URL
- 10. Come reindirizzare da un URL a un altro URL?
- 11. node.js verifica se esiste un URL remoto
- 12. Come verificare se un file esiste da un url
- 13. Rilevare se un'app Flask gestisce un URL
- 14. Verifica se esiste o meno un URL
- 15. Controlla se un URL è valido in elisir
- 16. Trovare un URL LDAP?
- 17. Modificare un URL relativo alla URL assoluto
- 18. Controlla se la stringa data è un URL
- 19. Come creare un URL privato?
- 20. Smarty se URL Contiene
- 21. Come capire se un handle di file è un socket?
- 22. Come capire se un file è un collegamento?
- 23. VB2010 Come capire se un numero è un intero intero
- 24. reindirizzare un URL specifico a un altro URL con .htaccess
- 25. Canonicalizzare/normalizzare un URL?
- 26. Come funziona un accorciatore URL?
- 27. Come analizzare un URL Web?
- 28. Come reindirizzare un URL a un altro URL nel file degli host, piuttosto che reindirizzare un IP a un URL?
- 29. Un UUID "URL sicuro"?
- 30. URL Django, utilizzando un? nell'URL
è importante, SLaks? Penso che questa sia una domanda ragionevole ... – Atmocreations
Ci aiuterebbe a dare una risposta migliore, specialmente se sapessimo che tipo di intranet cercava. – SLaks