Este código es un control de seguridad, y como tal, debe ser evaluado contra la amenaza que estaba destinado a controlar. En este caso, no se otorga ningún acceso especial según la dirección IP. En su lugar, la dirección IP se está utilizando como una restricción adicional en un mecanismo de autorización ya fuerte (cookies HTTP).
Es cierto que un atacante podría falsificar la IP de un usuario a través del encabezado X-Forwarded-For y omitir esta verificación adicional, pero eso significa que el atacante no solo debe conocer el ID de sesión del usuario (cookie), sino también el usuario. Dirección IP. Esto hace que la explotación de XSS con robo de sesión sea más difícil.
Considere las otras formas en que este control podría haber sido abordado. Primero, si el control no estuviera en su lugar, entonces cualquier ataque de robo de sesión (XSS, rastreo de tráfico, SSL MITM, etc.) resultaría en una sesión completamente utilizable para el atacante, sin trabajo adicional.
En cambio, si el control se implementara sin consultar el encabezado X-Forwarded-For, pero solo HTTP_REMOTE_ADDR, entonces un atacante que esté detrás del mismo proxy (en una escuela o empresa, por ejemplo) no necesitaría ningún conocimiento del control o la IP interna del usuario para tener una sesión completamente utilizable, ya que todas las sesiones HTTP salientes parecerían provenir de la misma IP (la del proxy).
Al agregar la verificación de X-Forwarded-For, el control requiere que un atacante tenga conocimiento de la dirección IP del usuario y la capacidad de falsificarlo en el encabezado X-Forwarded-For (no todos los atacantes están completamente restringidos, así que hay una reducción en el riesgo. No una eliminación del riesgo, ya que debemos asumir que hay algunos atacantes sin restricciones.)
Una forma de posiblemente reforzar este control sería mantener un poco de información adicional: la fuente de la última dirección IP que se usó. Por ejemplo, si la sesión se concedió por primera vez y se asoció con una IP que provenía de HTTP_REMOTE_ADDR, el control podría requerir que el tráfico futuro en esa sesión deba provenir de una IP obtenida de HTTP_REMOTE_ADDR, no de X-Forwarded-For. Esto elimina algunas posibilidades de falsificación. Las ventajas de implementar la verificación a la inversa (preferir X-Forwarded-For sobre HTTP_REMOTE_ADDR) probablemente no valgan la pena, ya que es mucho más difícil falsificar una dirección de red real que un encabezado HTTP.