8
votes

Comment savoir si une URL est une URL intranet?

Utiliser c # Comment déterminer peut-il déterminer si une URL est une URL intranet? Je voudrais que certains code fassent quelque chose si une URL est un intranet un vs public.


2 commentaires

Est-ce important, slaks? Je pense que c'est une question raisonnable ...


Cela nous aiderait à donner une meilleure réponse, surtout si nous savions quel genre d'intranettes qu'il cherche.


9 Réponses :


10
votes

Connaissez-vous les sous-réseaux internes (en termes d'adresses IP)? Si oui, je voudrais juste résoudre le nom de l'hôte et voir s'il est interne de cette façon.


0 commentaires

13
votes

Vous ne pouvez pas savoir implicitement. Si vos URL intranet ressemblent à des noms de domaine entièrement qualifiés, il est difficile de le dire. Le seul moyen de dire est d'interroger deux serveurs DNS différents (votre propre et un public). Si les deux renvoient le même résultat, c'est un domaine Internet. Si le serveur DNS public n'est pas en mesure de résoudre l'adresse, il est probablement un domaine intranet.


3 commentaires

J'ai vu des configurations insensées où le site intranet est nommé quelque chose comme "intranet.com", qui est résolu en interne à l'intranet, mais est un vrai domaine en direct appartenant à une entreprise arbitraire à l'extérieur. Vous devrez non seulement vérifier qu'il résout des serveurs DNS, mais qu'il résout la même chose.


Cette solution (résolution du nom à une adresse IP) fonctionnera si vous avez une connaissance a priori de ce qui est une adresse IP interne par rapport à une adresse IP externe. Si vous ajoutez un peu de configuration (une liste des gammes IP valides pour l'intranet), vous avez le problème résolu. Pas une jolie solution, mais cela fonctionnera.


Un autre problème est que si l'hôte résout à une adresse IP routière, car votre organisation a une adresse IP de classe A valide qu'elle utilise comme intranet IP. Cela rend la vie très difficile avec .NET et similaire.



0
votes

En général, il n'y a pas de moyen fiable de dire une URL intranet d'une URL Internet. Si l'intranet est disponible pour votre programme, il ressemblera à l'Internet, et sinon, vous ne saurez toujours pas si l'URL est censée être une URL intranet de travail ou une URL Internet brisée (temporairement). .

Vous aurez besoin de connaissances spéciales, telles que les noms de domaine ou les IP des serveurs qui fournissent l'intranet, afin de les distinguer.


0 commentaires

0
votes

Si vous souhaitez déterminer si une URL donnée est une URL intranet dans n'importe quelle entreprise (par opposition à la spécialisation de votre code pour une entreprise particulière), je vous souhaite bonne chance.

Habituellement, mais pas toujours, Itranet URL n'a pas de TLD (domaine de niveau supérieur, tel que .com ). Cependant, j'en ai vu cela.

Presque toujours (Afaik), les domaines intranet vont résoudre à une adresse IP similaire comme adresse actuelle de l'ordinateur. Notez que je n'ai pas dit le même sous-réseau; Les grands intranets peuvent avoir plusieurs sous-réseaux. Notez également que si l'ordinateur n'est pas dans un intranet d'entreprise, il sera des noms de domaine qui résolvent à des adresses IP similaires. (Sauf si l'ordinateur est derrière NAT)


2 commentaires

J'utilise toujours .Local ( en.wikipedia.org/wiki/.Local ) pour interne Espaces de noms. I.e. Supermegacorp.com serait supermegacorp.local en interne. Si tout le monde l'a fait, la solution à ce problème serait triviale. Bien sûr .Local pourrait ne pas fonctionner pour tout le monde, mais je n'ai pas encore trouvé quelque part où cela ne fonctionnerait pas.


Je n'ai jamais vu .Local utilisé avant. J'ai vu un environnement où l'intranet est hébergé sur les sous-domaines du nom de domaine externe de la société.



8
votes

Si l'URL se résout à une adresse TCPIP qui est l'une des adresses IP désignées en tant que propriété ipaddress privée, elle est définitivement sur votre intranet. Ce sont

  1. 10.xxx.xxx.xxx,
  2. 172.16.xxx.xxx via 172.31.xxx.xxx et
  3. 192.168.xxx.xxx

    S'il est résolu à toute autre adresse IP, il peut est toujours sur votre intranet, mais il a une adresse IP publique afin qu'elle soit potentiellement accessible de l'extérieur de l'intranet < / p>


2 commentaires

+1, comme je l'ai détaillé dans un commentaire à une autre réponse, certaines organisations, utilisez-la, utilisez des IP routables comme Intranet IP. De manière confortable, la sécurité de .NET est basée dans une grande partie sur ceux-ci lors de l'utilisation d'actions réseau. Si vous êtes assez chanceux d'avoir ces IP, alors je trouve que c'est un moyen valide de vérifier.


Cette solution va également casser pour IP6. Bien que IP6 ait réservé une adresse IP privée, la recommandation générale ne doit pas les utiliser pour éviter la traduction de l'adresse.



-1
votes

Pour ajouter à ce que les autres ont dit, Intranet n'a pas du domaine de connaissance de haut niveau dans son adresse. J'ai travaillé dans quelques entreprises et tout l'intranet était quelque chose comme:

http: // développements / admin - vous remarquerez qu'il n'y a pas de top- niveau de niveau du tout. Il est donc résolu à un ordinateur au sein du réseau. Encore une fois, comme son nom l'indique, vous n'êtes pas susceptible d'y accéder au-delà de l'environnement d'entreprise.


1 commentaires

Comme mentionné en réponse à la poste de Joel. Ce n'est pas toujours vrai.



0
votes

Je ne suis pas un programmeur C #. Je ne peux donc pas vous proposer du code, mais la méthode de base impliquerait de comparer la partie nom d'hôte de l'URL à celle du ou des serveurs de votre intranet. Ou, si votre URL utilise simplement une adresse IP et non un nom DNS, comparez l'adresse IP à celle de votre serveur intranet.

fissurer l'URL à l'aide de la manipulation de chaîne - bien que j'imagine que c # doit avoir une classe d'URL qui le fera pour vous - et extraire le nom d'hôte, comparez-le à une liste de serveurs.


0 commentaires

1
votes

Le simple, et non parfait mais fonctionne pour le cas de 80% consiste simplement à vérifier si l'URL a une période de temps. Je sais que les URL intranet peuvent être pleinement qualifiées, mais dans mon expérience (chez Microsoft), la plupart ne le font pas, et cela fonctionne plutôt bien.


0 commentaires

0
votes

Vous pouvez interroger Internet Explorer pour voir si le domaine correspondrait à la liste des domaines Intranet acceptés.

clé de registre est HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Paramètres \ Zonemap \ domaines

là si le domaine a une valeur pour 1 pour le protocole, il sera considéré comme un domaine intranet. Vous devrez effectuer une nslookup pour rassembler la «vraie» adresse.


1 commentaires

Interroger Internet Explorer Non, c'est-à-dire que vous ne trahirez pas Microsoft même si vous le torturez. ;)