2009-09-11 43 views
5

Usando C# ¿cómo se determinaría si una URL es una URL de intranet? Me gustaría que algún código haga algo si una URL es una intranet frente a pública.¿Cómo saber si una URL es una url de intranet?

+4

¿Es esto importante, SLaks? Creo que esta es una pregunta razonable ... – Atmocreations

+0

Nos ayudaría a dar una mejor respuesta, especialmente si supiéramos qué tipo de intranets está buscando. – SLaks

Respuesta

8

no se puede saber implícitamente. si las URL de su intranet parecen nombres de dominio totalmente calificados, es difícil de decir. la única forma de saber es consultar dos servidores DNS diferentes (uno propio y uno público). Si ambos devuelven el mismo resultado, entonces es un dominio de Internet. si el servidor DNS público no puede resolver la dirección, lo más probable es que sea un dominio de intranet.

+0

He visto configuraciones alocadas en las que el sitio de intranet se llama algo así como "intranet.com", que se resuelve internamente en la intranet, pero es un dominio real en vivo propiedad de una empresa arbitraria en el exterior. No solo deberá verificar que se resuelva en ambos servidores DNS, sino que resuelva lo mismo. – rmeador

+0

Esta solución (resolver el nombre de una IP) funcionará si tiene un conocimiento a priori de lo que es una IP interna versus una IP externa. Si agrega un poco de configuración (una lista de rangos válidos de IP para la intranet), usted tiene el problema resuelto. No es una solución bonita, pero funcionará. –

+0

Otro problema es si el host se resuelve en una IP enrutable porque su organización tiene una IP de Clase A válida que utiliza como IP de intranet. Hace la vida muy difícil con .Net y similares. – user7116

8

¿Conoces las subredes internas (en términos de direcciones IP)? Si es así, simplemente resolvería el nombre de host y vería si es interno de esa manera.

0

En general, no hay una manera confiable de distinguir una URL de intranet de una URL de Internet. Si la intranet está disponible para su programa, se verá igual que en Internet y, de no ser así, aún no sabrá si la URL se supone que es una intranet que funciona o si solo es una URL de Internet rotada (temporalmente). .

Necesitará algunos conocimientos especiales, como los nombres de dominio o direcciones IP de los servidores que proporcionan la intranet, para diferenciarlos.

0

Si desea determinar si una URL dada es una url de intranet en cualquier compañía (en lugar de especializar su código para una compañía en particular), le deseo suerte.

Por lo general, pero no siempre, las URL de itranet no tienen un dominio de nivel superior (como TLD), como .com). Sin embargo, he visto algunos que sí lo hacen.

Casi siempre (AFAIK), los dominios de intranet se resolverán en una dirección IP similar a la dirección actual de la computadora. Tenga en cuenta que no dije la misma subred; las intranets grandes pueden tener múltiples subredes. También tenga en cuenta que si la computadora no está en una intranet corporativa, será nombres de dominio regualr que se resuelven en direcciones IP similares. (A menos que la computadora esté detrás de NAT)

+0

Siempre uso .local (http://en.wikipedia.org/wiki/.local) para espacios de nombres internos. es decir, supermegacorp.com sería supermegacorp.local internamente. Si todos hicieran esto, la solución a este problema sería trivial. Por supuesto .local podría no funcionar para todos, sin embargo, todavía tengo que encontrar un lugar donde no funcione. – Bryan

+0

Nunca he visto '.local' usado anteriormente. He visto un entorno en el que la intranet está alojada en subdominios del nombre de dominio externo de la compañía. – SLaks

7

si la URL se resuelve en una dirección tcpIp que es una de las direcciones IP reservadas como una IPAddress privada, entonces definitivamente está en su Intranet. estos son

  1. 10.xxx.xxx.xxx,
  2. 172.16.xxx.xxx través 172.31.xxx.xxx y
  3. 192.168.xxx.xxx

si se resuelve a cualquier otra IP abordarlo fuerza seguir siendo en su intranet, pero tiene una dirección IP pública por lo que es potencialmente accesible desde fuera de la intranet

+0

+1, como detallé en un comentario de otra respuesta, algunas organizaciones, como usted señala, usan IP enrutables como IP de intranet. Confusamente. La seguridad de .Net se basa en gran parte en esto cuando se utilizan recursos compartidos de red. Si tienes la suerte de tener esas IP, entonces considero que es una forma válida de verificar. – user7116

+0

Esta solución también se romperá para IP6. Aunque IP6 tiene una dirección IP privada reservada, la recomendación general es no utilizarlas para evitar la traducción de direcciones. – Reza

-1

Para agregar a lo que otros han dicho, Intranet no tiene ningún dominio de nivel superior conocido en su dirección. He trabajado en unas pocas empresas y toda la Intranet eran algo así como:

http://developments/admin - se dará cuenta de que no hay dominio de nivel superior en absoluto. Entonces, se resuelve en una computadora dentro de la red. De nuevo, como su nombre lo indica, no es probable que acceda más allá del entorno corporativo.

+0

Como se mencionó en respuesta a la publicación de Joel. Esto no siempre es verdad – Bryan

0

No soy un programador C#, así que no puedo ofrecerle código, pero el método básico implicaría comparar la parte del nombre de host de la URL con la de los servidores en su intranet.O bien, si su URL solo usa una IP, no un nombre DNS, compare la IP con la de su (s) servidor (es) de intranet.

Rompe la URL utilizando la manipulación de cadenas, aunque supongo que C# debe tener una clase de URL que lo haga por usted, y extraiga el nombre de host, compárelo con una lista de servidores.

0

Lo simple y no perfecto, pero funciona para el caso del 80%, es simplemente verificar si la URL tiene un punto. Sé que las URL de Intranet pueden ser totalmente calificadas, pero en mi experiencia (en Microsoft) la mayoría no, y esto funciona bastante bien.

0

Puede consultar Internet Explorer para ver si el dominio coincide con la lista de dominios de intranet aceptados.

clave del registro HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ \ ZoneMap Dominios

No si el dominio tiene un valor de 1 para el protocolo se considerará un dominio de la intranet. Deberá realizar un nslookup para recopilar la dirección "real".

+0

* interrogar Internet Explorer * No, IE no traicionará a Microsoft, incluso si lo tortura. ;) –

Cuestiones relacionadas