Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Опредение реального адреса [2]
Форумы портала PHP.SU » » Работа с сетью » Опредение реального адреса

Страниц (3): « 1 [2] 3 »
 

16. Viper - 25 Июня, 2012 - 16:13:36 - перейти к сообщению
MisHel64 пишет:
правда понять бы еще, почему он так советует


HTTP_CLIENT_IP отсылаемый клиентом заголовок.
HTTP_X_FORWARDED_FOR получаем после прохождения через прокси. А т.к. по не стандартизированному стандарту порядок в этом заголовке clien_ip, proxy, ... и сравнив с клиентским ip(доверенность у него, как бы, несколько "побольше") получаем что второй заголовок формируется проксей не по стандарту и соответственно считаем неверным.
17. Гость - 25 Июня, 2012 - 16:33:08 - перейти к сообщению
Viper пишет:
HTTP_CLIENT_IP отсылаемый клиентом заголовок.
Не правда. Не отсылает клиент этого заголовка. И кстати: http://www[dot]squid-cache[dot]org/Doc/c[dot][dot][dot]_send_client_ip/
18. EuGen - 25 Июня, 2012 - 16:42:20 - перейти к сообщению
MisHel64 пишет:
И кстати

Кстати - что именно? Какое отношение ICAP имеет к данному вопросу, если речь идет об анализе данных, имея в распоряжении только HTTP?
19. Гость - 25 Июня, 2012 - 16:57:36 - перейти к сообщению
EuGen Меня очень сложно затроллить, так что не советую пытаться это делать. Кроме того, своей неудачной попыткой, вы еще и показали, что не имеете ни малейшего представления, что такое squid. На этом я думаю, и эту дисскусию можно закончить, а вам стоит ознакомится с любой книгой по администрированию юникс подобных систем.
20. Champion - 25 Июня, 2012 - 17:00:05 - перейти к сообщению
MisHel64 пишет:
Чиста по приколу, если не лень конечно. Напишите, что выведет скрипт, ссылку на который вы дали, в моем случает.
Посчитает, что Ваш ip - один x_forvarded_for (да, их там 2, выглядит глупо, но один из них наиболее вероятно ваш).
MisHel64 пишет:
Viper пишет:
HTTP_CLIENT_IP отсылаемый клиентом заголовок.
Не правда.
Взял я fiddler, отправил заголовок Client-Ip: pink elephant, угадайте, что я увидел в массиве $_SERVER.
21. EuGen - 25 Июня, 2012 - 17:02:24 - перейти к сообщению
Я задал Вам вопрос. Либо ответьте, либо не продолжайте. Какое именно отношение ICAP имеет к рассматриваемой задаче? - раз. И какое отношение squid имеет к ней ? - два (подсказка - Все прокси работают на squid?; какое отношение ПО каких-либо серверов/NAT/proxy имеют к тому, что приходит в HTTP-запросе от клиента, который нужно анализировать?)

Предупреждаю - мое терпение в отношении Вас на исходе. Я всегда стараюсь быть максимально корректным, но Ваше умение провоцировать, похоже, превосходит все грани мыслимого.
22. Гость - 25 Июня, 2012 - 17:07:38 - перейти к сообщению
Champion пишет:
Взял я fiddler, отправил заголовок Client-Ip: pink elephant, угадайте, что я увидел в массиве $_SERVER.
Не. Не угадаю.
Я проще сделал. Написал вот такой код:
PHP:
скопировать код в буфер обмена
  1. $DebFil = fopen($DebName,'w'); flock($DebFil,LOCK_EX);
  2. fwrite($DebFil,"[Server ARRAY]:\n");
  3. foreach ($_SERVER as $Key => $Value) { fwrite($DebFil,"   ${Key}\t${Value}\n"); }
  4. flock($DebFil,LOCK_UN);fclose($DebFil);

И посмотрел что туда пишется....
(Добавление)
EuGen
Viper пишет:
HTTP_CLIENT_IP отсылаемый клиентом заголовок.

Ключевое слово выделил жирным. Так понятней?
23. EuGen - 25 Июня, 2012 - 17:19:35 - перейти к сообщению
Понятнее, что Вы почему-то клиентом считаете ту машину, которая инициировала запрос.
Все-таки думаю в приведенной Вами цитате имелись ввиду данные, пришедшие от клиента и полученные уже на сервере - то есть конечный HTTP-запрос. И - да, они могут быть установлены через squid (да и без разницы через что - это заголовок и он может меняться любым прокси). И если той ссылкой, что Вы привели, Вы имели ввиду то, что HTTP_CLIENT_IP будет устанавливаться в squid - то мне все равно не понятно, какое это имеет значение - ведь это в любом случае заголовок, пришедший в запросе. Доверять ему нет никаких оснований.
24. Гость - 25 Июня, 2012 - 17:30:43 - перейти к сообщению
EuGen пишет:
Понятнее, что Вы почему-то клиентом считаете ту машину, которая инициировала запрос.

Даже комментировать не буду. Игра словами и не более.

EuGen пишет:
Доверять ему нет никаких оснований.

Доверять ему есть все основания. Почему, я уже не однократно писал. Жаль что вы этого не увидели. Может вам все же не стоит продолжать?
25. fdr21 - 25 Июня, 2012 - 17:33:38 - перейти к сообщению
Цитата:
Я проще сделал. Написал вот такой код:

можно еще проще))) Радость
26. Гость - 25 Июня, 2012 - 17:44:20 - перейти к сообщению
Viper пишет:
HTTP_CLIENT_IP отсылаемый клиентом заголовок.
HTTP_X_FORWARDED_FOR получаем после прохождения через прокси. А т.к. по не стандартизированному стандарту порядок в этом заголовке clien_ip, proxy, ... и сравнив с клиентским ip(доверенность у него, как бы, несколько "побольше") получаем что второй заголовок формируется проксей не по стандарту и соответственно считаем неверным.

Возвращаясь вот к этому. В ситуации, когда есть и CLIENT_IP и X_FORWARDED_FOR, и запрос проходил только через один прокси сервер, оба заголовка будут содержать один, и причем одинаковый IP. Вот при прохождении второго прокси, ситуация поменяется. В X_FORWARDED_FOR может быть дописан адрес первого прокси. Причем в зависимости от программы сервера в начало (сквид) или конец (мой случай). Вот вопрос, а будет ли перезаписан CLIENT_IP. Вот в чем вопрос то собственно. То, что он теоретически может быть перезаписан, я знаю. А вот практически?
(Добавление)
fdr21 пишет:
можно еще проще)))

Можно. Но вот только маленькая разница. Мой код, сохраняет в файл. А ваш выводит в браузер. Я конечно в курсе, что вывод можно перенаправить.
Но речь то не о том КАК увидеть, а о том, ЧТО увидеть. А так как ваш код выводит больше информации, причем не нужной, то значит, что с поставленной задачей он справляется хуже.
27. fdr21 - 25 Июня, 2012 - 18:12:37 - перейти к сообщению
Цитата:
Мой код, сохраняет в файл

Если вам нужно записать

конечно Я вас не принуждаю использовать именно так, делайте как вам удобно, просто думаю так производительней, и все в одной строчке)))
Цитата:
А так как ваш код выводит больше информации

Это как, вроде бы массив $_SERVER что так, что так он одинаков, или я ошибаюсь?))
и еще зачем Вам понадобился реальный Ip адрес юзера? по мне я считаю его можно подделать!
попробуйте изложит, может кто не будь альтернативу предложит!!!
28. Гость - 25 Июня, 2012 - 18:52:46 - перейти к сообщению
Ну для начало об эффективности кода. Мой выводит чуть больше информации, чем дамп массива, что отчетливо видно, даже из тех кусков, которые не вырезаны. Можно конечно сделать несколько file_put_contents. А что будет если страничку откроют одновременно более одного человека? Вот потенциальный источник ошибки. Не был я в комсомоле. По этому не привык создавать проблемы, только для того, что бы их героически решать. Можно конечно затолкать все в строку, а потом все разом сбросить. А реально этот велосипед со строками нужен? Да и одной строчкой тут уже не обойдешься.

Ну и ко второй части вопроса. Ответ банален. НАДО. И я думаю это исчерпывающий ответ. И более подробного не будет. Если уж на простой вопрос, из какой переменной взять значение адреса, даны десятки бессмысленных постов, и не был дан ни один аргументированный ответ, то что будет если я отвечу более подробно? Вы уверены, что результат будет другим? Ну дадут мне ссылок еще на десяток страниц, содержащие похожие на мой вопрос буквы. Ну прорекламируют еще пяток своих скриптов, реализующих то же самое, но совсем не то, да еще и криво. А оно мне надо?
И главное, все отвечающие будут абсолютно уверены, что только они умеют пользоваться гуглем, а я такой лох, не умею.

И по третей части. Подделать и обойти можно абсолютно все. Главное знать что обходить. А так как исходников в свободном доступе не будет, то знания эти придется добывать экспериментально.
29. Champion - 25 Июня, 2012 - 19:23:30 - перейти к сообщению
MisHel64 пишет:
Возвращаясь вот к этому. В ситуации, когда есть и CLIENT_IP и X_FORWARDED_FOR, и запрос проходил только через один прокси сервер, оба заголовка будут содержать один, и причем одинаковый IP. Вот при прохождении второго прокси, ситуация поменяется. В X_FORWARDED_FOR может быть дописан адрес первого прокси. Причем в зависимости от программы сервера в начало (сквид) или конец (мой случай). Вот вопрос, а будет ли перезаписан CLIENT_IP. Вот в чем вопрос то собственно. То, что он теоретически может быть перезаписан, я знаю. А вот практически?
Вот теперь я вижу совсем другой вопрос.
1. Он и клиентом(браузером / чем угодно) изначально может слаться какой угодно. Например, строка "розовый слоник".
2. Он может подменяться прокси сервером. И стираться. И Х_ФОРВАРДЕД тоже может.

MisHel64 пишет:
И по третей части. Подделать и обойти можно абсолютно все. Главное знать что обходить. А так как исходников в свободном доступе не будет, то знания эти придется добывать экспериментально.
Да ладно, принять http запрос и пернаправить его дальше и подправить что-то в заголовках - задача не особо сложная. Это на PHP на коленке делается без усилий.

Сложнее подделать REMOTE_ADDR - это не HTTP заголовок. Но вы знаете, что он дает адрес последнего узла. Остальное - не более, чем http заголовки, которыми пользоваться можно только для справки и доверять им стоит, но только как необязательно достоверному материалу.
30. fdr21 - 25 Июня, 2012 - 19:41:29 - перейти к сообщению
Цитата:
Мой выводит чуть больше информации, чем дамп массива, что отчетливо видно, даже из тех кусков, которые не вырезаны. Можно конечно сделать несколько file_put_contents. А что будет если страничку откроют одновременно более одного человека?

Умереть со смеху, Вы пожалуйста по внимательней)
в вашем скрипте:
PHP:
скопировать код в буфер обмена
  1. flock($DebFil,LOCK_EX); // Блокировка
  2. foreach ($_SERVER as $Key => $Value) { fwrite($DebFil,"   ${Key}\t${Value}\n"); }
  3. //проходит по массиву $_SERVER и записывает его ключи (${Key}) и их значение (${Value})
  4. //А еще что он записывает? Заголовок?
  5. fwrite($DebFil,"[Server ARRAY]:\n");
Радость
Если так то да... целый фонтан информации)))
Хочу вам еще раз показать
PHP:
скопировать код в буфер обмена
  1. file_put_contents($filename, print_r($_SERVER, TRUE), LOCK_EX);

file_put_contents - записывает строку в файл $filename
print_r($_SERVER, TRUE) - возвращает строку массива $_SERVER с ключами и значениями (в удобочитаемом формате)
LOCK_EX - блокировка файла!!!

Оба примера одинаковые, за исключением заголовка!

На второй вопрос, вам был дан ответ даже не один раз!
истинный ИП, ну или последний из цепочек серверов будет в $_SERVER['REMOTE_ADDR'].
пробегите взглядом по PHP_manua-лу, о вашем заголовке там и духу нет.
почему, разработчики PHP не добавили его в мануал, в место $_SERVER['REMOTE_ADDR']?
Думаю догадаться не трудно!
Не все сервера отображают эти заголовки которые вы указали, и не все прокси сервера передают их. Если пользователь захочет подделать свой ИП, он их подделает!

 

Powered by ExBB FM 1.0 RC1