Разве можно доверять $_server['remote_addr']? А если в заголовке передавать неверный ip? То и $_server['remote_addr'] - будет неверный
Я нахожусь по ip-адрессу 177.55.67.288 , а передаю в заголовке 10.10.10.10 Даже в квесте античата есть такое задание, 4 или 5 левел, если не ошибаюсь
епт ну через ремоте_аддр и придет 10.10.10.10 и каким образом ты собрался узнать 177.55.67.288... -- Так что уже отвтили, расслабся
Друг это ты вопрос прочитай и вникни в его смысл. Ты прочитал название темы если что =/ А проверять на валидность нет смысла, потому что если 10.10.10.10 придет как ремоте_аддр, то 177.55.67.288 ты уже никак(формально, в рамках данного вопроса) не узнаешь
хуясе о_О. ну я читал (не помню где уже), что можно при определенных условиях обмануть сервак при передаче модифицированного X_FORWARDED_FOR, но чтобы подменять REMOTE_ADDR, ... хмм... можно линк у тебя попросить. или описание) Получается, ты можешь перезаписать глобальную $_SERVER['remote_addr'] на любом серваке ? хм. сомнительно.
я имел ввиду проверить не на валидность, а на отсутствие вредоносного кода в нём. тем не менее слепил вот такой говнокод, просьба помидорами не закидывать: PHP: static function validateIp($ip) { $ipData = explode('.', $ip); if(sizeof($ipData) == 4){ for($i=0;$i<4;$i++) if($i != 0) $newIp .= ('.' . intval($ipData[$i])); else $newIp .= intval($ipData[$i]); return $newIp; }else return 0; }
Naydav, в квесте античата надо подделать x_forwarded_for, и отношения к ip_addr это никакого не имеет. Не надо утверждать то чего не знаешь. (Кстати уже второй раз) 2Дикс, в ip_addr ты не передашь ничего кроме ип адреса. Другое дело юзер агент.
Собственно давайте поставим точку. $_SERVER['REMOTE_ADDR'] сюда записывается IP адрес, машины которая запрашивает, скрипт, и заполняется он информацией которую передаёт вебсервер к ПХП. Иногда допускают ошибку в кодинге, в определении IP адреса, доверяя дополнительным заголовкам HTTP_* (например HTTP_X_FORWARDED_FOR) которые МОЖНО подменить послав произвольные дынные в этом заголовке, вследствии чего даётся доступ к какой то ограниченой зоне. Иными словами в нормальных условиях туда записать ничего НЕЛЬЗЯ, никакими заголовками. Другое дело это криворукость програмеров, допускающих, глобализацию переменных например фунциями extact,import_global_variables и др. с неверными аргументами, тогда становится возможным переопределение практически любых переменных, вследствии чего возможно внедрение вредоносного произвольных данных в переменную $_SERVER['REMOTE_ADDR']. Всё.
remote_addr берется из заголовков пакета методами php его подделать нельзя, но можно подделать ip адрес в пакете с помошью perl raw_socket (используется в Ddos ) . в заголовках можно поделать client_ip но remote_addr от этого не изменится. не уверен но вроде нельзя заделать ип в пакете не подходящий под формат [0-9].[0-9].[0-9].[0-9]
Во первых, SQLHACK уже поставил жирную точку, думаю обсуждать далее бессмысленно, всем и так все ясно. Ты немного не понял. Да, это возможно, например в UDP-флуде, TCP SYN флуде итд. Т.е. там факта соединения впринципе нет, просто хост закидывается пакетами. Когда же ты соединяешься, то сервер<-->клиент перекидывается номером последовательности (sequence number), и подтверждая тем самым подлинность соединения. з.ы. писал по памяти, поправьте, если где ошибся
подменить можно в нескольких случаях: а) если версия php уязвима , через массив $_GLOBALS в request в) если в скрипте до этого используется перенос request в глобальную область, например через ф-ю extract() и тп вобще во многих движках проверяется все равно на валид это значение. PS хотя на счет первого сто % не скажу но вроде так было.