Cómo estar seguro de que una solicitud HTTP es local cuando se usa httplistener
-
25-09-2019 - |
Pregunta
Estoy usando HttpListener
. Sin embargo, solo quiero procesar las solicitudes que provienen localmente, no de otra máquina/servidor.
¿Cómo verificaría programáticamente si una solicitud entrante es local con seguridad? ¿Necesitaría usar algunos de los HttpListenerRequest
miembros?
Solución
Verifícalo con RemoteEndPoint
propiedad Si la dirección remota de la solicitud es igual 127.0.0.1
.
Otros consejos
los HttpListenerRequest
tiene una propiedad IsLocal
que también debería proporcionar esta información. Sin embargo, está volviendo false
en mi computadora. Reflexionando en el código fuente, parece que esto se debe a que el IsLocal
La propiedad usa el código:
return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
Cuando tal vez debería usar el código en el (inaccesible) InternalIsLocal
propiedad que es:
return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
(Esta expresión regresa true
para mi situación). El uso de este enfoque puede ser preferible para que su código no dependa de una dirección IPv4, ya que la transición se realiza a IPv6.