нужно ли проверять $ _SERVER ['REMOTE_ADDR']? - PullRequest
5 голосов
/ 25 июня 2011

при условии, что php работает в веб-режиме через cgi / mod_php / etc ...

безопасно ли предположить, что $ _SERVER ['REMOTE_ADDR'] будет существовать, и, более того, он будет содержатьправильно стилизованный (извините, терминология здесь может быть отключена ...) ip (1.1.1.1 -> 255.255.255.255?)?

это не вопрос относительно того, какой ip содержится внутри $ _SERVER ['REMOTE_ADDR'] будет истинным IP-адресом клиента, выполняющего запрос, так как я понимаю, что это можно «подделать», изменив исходящие tcp-пакеты ...

просто:

a) будет всегда существовать $ _SERVER ['REMOTE_ADDR'], если php запущен в веб-режиме.б) если $ _SERVER ['REMOTE_ADDR'] всегда существует, будет ли он всегда содержать правильно синтаксический ip?

спасибо.

1 Ответ

6 голосов
/ 25 июня 2011

Да, он всегда присутствует в веб-режиме, и, поскольку IP-адрес преобразуется из его двоичного представления в текстовый формат, который вы видите, он всегда действителен & ndash; невозможно указать неверный IP-адрес в заголовке IP-адреса.

Еще одна вещь: не используйте какой-либо специальный формат, если вам абсолютно не нужно иметь дело с IP-адресами. Например, адреса IPv6 длиннее и содержат разные символы. По сути, обрабатывайте IP-адреса как непрозрачную строку.

...