oggi mi sono imbattuto in un comportamento piuttosto strano di una mia applicazione basata su php. In una certa parte del sistema c'è un'interfaccia utente che fa uso di chiamate AJAX per riempire le caselle di elenco con contenuto dal back-end.php/ajax REMOTE_ADDR impostato su IP dell'adattatore di rete fasullo
A questo punto, il listener AJAX esegue un controllo di sicurezza su tutte le richieste in arrivo, assicurandosi che solo le risposte ricevute da IP client validi. Anche l'IP valido è memorizzato nel back-end.
Per ottenere IP del client che ho usato pianura vecchio
$_SERVER['REMOTE_ADDR']
che funziona per la maggior parte dei clienti. Oggi mi sono imbattuto in un'installazione in cui remote_addr conteneva l'IP di una scheda di rete che non era quella che eseguiva la comunicazione effettiva per la mia applicazione.
Googling intorno a me agve Roshan's Blog entry on the topuic:
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))//check ip is pass from prxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
Purtroppo il problema persiste.
Qualcuno ha mai inciampato in questo tipo di problema (in realtà non penso di aver scoperto un numero completamente nuovo ^^) e ha un'idea per me come risolvere questo problema?
EDIT:
Sono su
- PHP versione 5.2.9-1
- Apache/2.2.9 (Win32)
La comunicazione è fatta tramite una normale scheda LAN. Ora il client actuall ha più dispositivi . Adattatori VMNet e così via.
Mi chiedo come una configurazione client puo 'disturbare' un server web che tanto ...
TIA
K
puoi inserire qui alcuni dettagli riguardo agli adottanti e al server che esegue l'applicazione. Voglio dire quali IP tengono. –
pls vedere il mio Inoltre – KB22
così scenario di esempio potrebbe apparire come questo sul lato client: eth0 - 10.0.0.1 eth1 - 10.1.1.1 poi sul server di u hanno 10.1.1.2 e quando la richiesta passa attraverso dal client al posto di 10.1 .1.1 mostra 10.0.0.1? –