Gli indirizzi IP devono essere convalidati per impedire l'SQL Injection?

12

In PHP recupero l'indirizzo IP di un utente ( $_SERVER['REMOTE_ADDR'] ) per usarlo in alcune query MySQL, ma faccio non per convalidarli come veri indirizzi IP.

Devo convalidare gli indirizzi IP degli utenti prima di utilizzarli nelle query MySQL o saranno sempre indirizzi IP validi quando utilizzo $_SERVER['REMOTE_ADDR'] ? Sto tentando di impedire un'iniezione SQL.

Se dovessi convalidare, quale funzione PHP consiglia di usare? Devo inviare l'indirizzo IP a mysqli_real_escape_string() , ecc?

    
posta Hope4You 25.07.2012 - 16:48
fonte

3 risposte

14

È necessario utilizzare istruzioni preparate per evitare iniezioni SQL. Dai un'occhiata a questa domanda .

Tuttavia, $_SERVER['REMOTE_ADDR'] dovrebbe essere un indirizzo IP valido come proviene dal server, come verificato dall'handshake TCP. Vedi questa domanda per una discussione estesa su questo.

    
risposta data 25.07.2012 - 16:59
fonte
6

Da questa pagina sembra che l'elemento REMOTE_ADDR dell'array $ _SERVER sia popolato da il server invece di essere passato dal client, quindi dovrebbe (assenti eventuali bug) essere un presupposto ragionevole che sia l'indirizzo IP del client remoto (o un server proxy che agisce per conto del client remoto).

Come @ Lucb1e ha commentato di seguito alcuni elementi dell'array $ _SERVER provengono dal client e dovrebbero essere meno attendibili

Come @Oleksi menziona non fidarsi dell'input alle query SQL è una buona idea in generale.

    
risposta data 25.07.2012 - 17:45
fonte
3

REMOTE_ADDR è determinato dallo stack TCP ricevente - non sono i dati "inviati" dal client. Né IPv4 né ipv6 utilizzano caratteri che sono espressioni non sicure / delimitate in SQL.

Tuttavia, la memorizzazione dell'indirizzo IP (ad es. xxx.xxx.xxx.xxx o xxxx: xxxx: xxxx: xxxx) xxxx: xxxx) è molto più semplice e il valore numerico è molto più utile e richiede meno spazio di memorizzazione - consultare il manuale per le funzioni inet_aton () e inet6_aton ().

    
risposta data 25.07.2012 - 23:59
fonte

Leggi altre domande sui tag