Mit C# wie würde man feststellen, ob eine URL eine Intranet-URL ist? Ich möchte etwas Code, um etwas zu tun, wenn eine URL ein Intranet gegen die Öffentlichkeit ist.Wie erkennt man, ob eine URL eine Intranet-URL ist?
Antwort
können Sie nicht implizit wissen. Wenn Ihre Intranet-URLs wie vollständig qualifizierte Domänennamen aussehen, ist es schwer zu sagen. Die einzige Möglichkeit, dies zu tun, besteht darin, zwei verschiedene DNS-Server (Ihren eigenen und einen öffentlichen) abzufragen. Wenn beide das gleiche Ergebnis liefern, handelt es sich um eine Internetdomäne. Wenn der öffentliche DNS-Server die Adresse nicht auflösen kann, handelt es sich höchstwahrscheinlich um eine Intranet-Domäne.
Ich habe wahnsinnige Setups gesehen, bei denen die Intranetseite so etwas wie "Intranet.com" genannt wird, das intern in das Intranet aufgelöst wird, aber eine echte Live-Domain ist, die im Außenbesitz einer beliebigen Firma ist. Sie müssen nicht nur überprüfen, ob es von beiden DNS-Servern aufgelöst wird, sondern auch, dass es zu demselben Ergebnis führt. – rmeador
Diese Lösung (Auflösung des Namens in eine IP) funktioniert, wenn Sie a priori wissen, was eine interne IP im Vergleich zu einer externen IP ist. Wenn Sie ein wenig Konfiguration hinzufügen (eine Liste gültiger IP-Bereiche für das Intranet), haben Sie das Problem gelöst. Keine schöne Lösung, aber es wird funktionieren. –
Ein weiteres Problem besteht darin, dass der Host zu einer routbaren IP-Adresse aufgelöst wird, da Ihre Organisation über gültige IP-Adressen der Klasse A verfügt, die als Intranet-IPs verwendet werden. Es macht das Leben mit .Net und dergleichen sehr schwer. – user7116
Kennen Sie die internen Subnetze (in Bezug auf IP-Adressen)? Wenn ja, würde ich einfach den Host-Namen auflösen und sehen, ob es so intern ist.
Im Allgemeinen gibt es keine zuverlässige Möglichkeit, eine Intranet-URL von einer Internet-URL zu unterscheiden. Wenn das Intranet für Ihr Programm verfügbar ist, wird es genauso aussehen wie das Internet, und wenn nicht, dann werden Sie immer noch nicht wissen, ob die URL eine funktionierende Intranet-URL sein soll oder nur eine (vorübergehend) unterbrochene Internet-URL ist .
Sie benötigen spezielle Kenntnisse, z. B. die Domänennamen oder IPs der Server, die das Intranet bereitstellen, um sie voneinander zu unterscheiden.
Wenn Sie feststellen möchten, ob eine bestimmte URL eine Intranet-URL in einer Firma ist (im Gegensatz zur Spezialisierung Ihres Codes für eine bestimmte Firma), wünsche ich Ihnen viel Glück.
In der Regel, aber nicht immer, haben itranet-URLs keine TLD (Top Level Domain, wie .com
). Allerdings habe ich einige gesehen, die das tun.
Fast immer (AFAIK) werden Intranet-Domänen in eine ähnliche IP-Adresse aufgelöst wie die aktuelle Adresse des Computers. Beachten Sie, dass ich nicht dasselbe Subnetz angegeben habe. Große Intranets können mehrere Subnetze haben. Beachten Sie außerdem, dass regulare Domänennamen sind, die zu ähnlichen IP-Adressen aufgelöst werden, wenn sich der Computer nicht in einem Unternehmensintranet befindet. (Wenn sich der Computer nicht hinter NAT befindet)
Ich verwende immer .local (http://en.wikipedia.org/wiki/.local) für interne Namespaces. d. h. supermegacorp.com wäre intern supermegacorp.local. Wenn jeder dies tun würde, wäre die Lösung für dieses Problem trivial. Natürlich funktioniert .local möglicherweise nicht für alle, aber ich muss noch irgendwo finden, wo es nicht funktionieren würde. – Bryan
Ich habe noch nie zuvor '.local' gesehen. Ich habe eine Umgebung gesehen, in der das Intranet auf Subdomänen des externen Domainnamens des Unternehmens gehostet wird. – SLaks
Wenn die URL zu einer TCP IP-Adresse aufgelöst wird, die eine der IP-Adressen ist, die als eine private IP-Adresse reserviert sind, befindet sie sich definitiv in Ihrem Intranet. diese sind
- 10.xxx.xxx.xxx,
- 172.16.xxx.xxx durch 172.31.xxx.xxx und
- 192.168.xxx.xxx
wenn es beschließt, andere IP-Adresse es Macht noch im Intranet sein, aber es hat eine öffentliche IP-Adresse, so dass es möglicherweise von außerhalb des Intranet ist
+1, Wie ich in einem Kommentar zu einer anderen Antwort ausführte, verwenden einige Organisationen, wie Sie darauf hinweisen, routbare IPs als Intranet-IPs. Verwirrend genug. Net-Sicherheit basiert zu einem großen Teil auf diesen bei der Verwendung von Netzwerkfreigaben. Wenn Sie Glück haben, diese IPs zu haben, dann finde ich es eine gute Möglichkeit, um zu überprüfen. – user7116
Diese Lösung wird auch für IP6 brechen. Obwohl IP6 private IP-Adressen reserviert hat, besteht die allgemeine Empfehlung nicht darin, sie zu verwenden, um eine Adressumsetzung zu vermeiden. – Reza
Um zu dem hinzuzufügen, was andere gesagt haben, hat Intranet keine bekannte Top-Level-Domain in seiner Adresse. Ich habe in einigen Unternehmen gearbeitet und die ganze Intranet war so etwas wie:
http://developments/admin - Sie werden feststellen, dass es keine Top-Level-Domain überhaupt. Es löst also einen Computer im Netzwerk auf. Wie der Name schon sagt, ist es unwahrscheinlich, dass Sie über die Unternehmensumgebung darauf zugreifen.
Wie in der Antwort auf Joels Beitrag erwähnt. Das ist nicht immer richtig. – Bryan
Ich bin kein C# -Programmierer, daher kann ich Ihnen keinen Code anbieten, aber die grundlegende Methode würde beinhalten, den Hostnamen-Teil der URL mit dem der Server in Ihrem Intranet zu vergleichen.Oder wenn Ihre URL nur eine IP-Adresse und keinen DNS-Namen verwendet, vergleichen Sie die IP-Adresse mit der Ihres Intranetservers.
Crack die URL mit String-Manipulation - obwohl ich denke, C# muss eine URL-Klasse, die dies für Sie tun wird - und extrahieren Sie den Hostnamen, vergleichen Sie es mit einer Liste von Servern.
Das einfache und nicht perfekt, aber funktioniert für den 80% Fall ist einfach zu überprüfen, ob die URL einen Punkt enthält. Ich weiß Intranet-URLs können voll qualifiziert werden, aber nach meiner Erfahrung (bei Microsoft) die meisten nicht, und das funktioniert ziemlich gut.
Sie könnten Internet Explorer abfragen, um zu sehen, ob die Domain der Liste der akzeptierten Intranet-Domains entspricht.
Registrierungsschlüssel ist HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Currentversion \ Internet Settings \ ZoneMap \ Domains
Es wenn der Domain-Wert für 1 für das Protokoll hat, wird es eine Intranet-Domäne angesehen werden. Sie müssen ein nslookup durchführen, um die "echte" Adresse zu erfassen.
* Internet Explorer abfragen * Nein, IE wird Microsoft nicht verraten, auch wenn Sie es foltern. ;) –
- 1. Wie erkennt man, ob ein Typ eine benutzerdefinierte Struktur ist?
- 2. Wie erkennt man, ob eine EXE WPF ist
- 3. Wie erkennt man, ob eine Datei PDF oder TIFF ist?
- 4. Wie erkennt man, ob ein bestimmtes Laufwerk eine Festplatte ist?
- 5. Dynamisches Objekt - Wie erkennt man, ob eine Eigenschaft definiert ist?
- 6. Wie erkennt man, ob ein Eingabefeldwert eine Maske ist?
- 7. WIX: Wie erkennt man, ob eine Drittanbieter-Anwendung installiert ist?
- 8. Wie erkennt man, ob eine F # -Funktion rein ist?
- 9. Wie erkennt man, ob eine .NET-Assembly dynamisch ist?
- 10. Wie erkennt man, ob Rails an der Root-URL ist?
- 11. Wie erkennt man, ob eine Zeichenfolge mindestens eine Zahl enthält?
- 12. Wie erkennt man, ob eine Zeichenkette mit Javascript in URL-Format ist?
- 13. Wie erkennt man, ob eine HTML-Seite ein Video enthält?
- 14. Wie erkennt man, ob eine Klasse eine interne Klasse oder eine Benutzerklasse ist?
- 15. Wie erkennt man, ob Bluetooth angeschlossen ist?
- 16. Wie erkennt man, ob Daydream eingeschaltet ist?
- 17. Wie erkennt man, ob SearchView erweitert ist?
- 18. Wie erkennt man, ob AVAudioRecorder pausiert ist?
- 19. Wie erkennt man, ob $ _POST gesetzt ist?
- 20. Wie man erkennt, ob eine Klasse von NSObject (Objective-C)
- 21. Wie man leicht erkennt, ob Ninject eine Klasse auflösen kann
- 22. Wie erkennt man, ob eine Bibliothek DEBUG oder RELEASE erstellt?
- 23. Wie erkennt man, ob eine Zeichenfolge Sonderzeichen enthält?
- 24. Wie erkennt man, ob sich eine Java-Systemeigenschaft geändert hat?
- 25. VB2010 Wie man erkennt, ob eine Zahl eine ganze Zahl ist
- 26. SQL Server: Wie erkennt man, ob eine Datenbank eine Systemdatenbank ist?
- 27. Wie erkennt Java, ob eine Position primitiv oder referenziert ist
- 28. Wie erkennt man, ob die URL eine Port-ID hat oder JS oder JQuery nicht verwendet?
- 29. Wie erkennt man, ob der Benutzer 3G/Wifi aktiviert hat, bevor eine URL-Verbindung hergestellt wird?
- 30. Wie erkennt man eine Firewall in Windows?
ist das wichtig, SLaks? Ich denke, das ist eine vernünftige Frage ... – Atmocreations
Es würde uns helfen, eine bessere Antwort zu geben, vor allem, wenn wir wüssten, welche Art von Intranets er sucht. – SLaks