PDA

View Full Version : روشی برای گرفتن آی پی کاربر که نشه دورش زد هست ؟



saeedvir
پنج شنبه 06 تیر 1392, 13:39 عصر
سلام.

در PHP برای گرفتن آی پی از


$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
echo('1 '.$ipaddress.'<br>');

$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
echo('2 '.$ipaddress.'<br>');


$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
echo('3 '.$ipaddress.'<br>');


$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
echo('4 '.$ipaddress.'<br>');


$ipaddress = $_SERVER['HTTP_FORWARDED'];
echo('5 '.$ipaddress.'<br>');


$ipaddress = $_SERVER['REMOTE_ADDR'];
echo('6 '.$ipaddress.'<br>');

استفاده میشه .(اگه از روش زیر استفاده کنیم ، مقداری که با اون مقادیر اولی بدست میاد به آخرین مقدار متفاوت است.)

ولی یک مطلبی خوندم که میشه با ارسال هدر مناسب این روش رو دور زد حتی بدون استفاده از پروکسی.

به این صورت که مثلا با افزونه LIVE Http Header در فایرفاکس باید هدر زیر رو به اون صفحه که آی پی رو میگیره بفرستیم . اینم هدرش :


X-FORWARDED-FOR: 92.18.13.192
X_FORWARDED_FOR: 92.18.13.192
CLIENT-IP: 92.18.13.192
CLIENT_IP: 92.18.13.192


می تونید روی این سایت یا سایت های مشابه چک کنید.


http://www.cmyip.com


ولی جالب این جاست که نمیشه سایت هایی مثل گوگل یا adobe رو دور زد. می خواستم بدونم اونا چه طور آی پی رو بدست میارن که نمیشه دورشون زد ؟؟؟

ضمیمه رو ببینید !!!

وقتی روی Replay کلیک کنم اون آی پی دلخواهی که گذاشتم رو سایت نشون میده.

spiderman200700
پنج شنبه 06 تیر 1392, 15:44 عصر
در کل هیچ راهی که 100% IP جعلی یا Proxy تشخیص بده وجود نداره , یه کلاس قبلا دیدم که تا حدی خوب بود.


/**
* Proxy Detector v0.1
* copyrights by: Daantje Eeltink (me@daantje.nl)
* http://www.daantje.nl
*
* first build: Mon Sep 18 21:43:48 CEST 2006
* last build: Tue Sep 19 10:37:12 CEST 2006
*
* Description:
* This class can detect if a visitor uses a proxy server by scanning the
* headers returned by the user client. When the user uses a proxy server,
* most of the proxy servers alter the header. The header is returned to
* PHP in the array $_SERVER.
*
* License:
* GPL v2 licence. (http://www.gnu.org/copyleft/gpl.txt)
*
* Support:
* If you like this class and find it usefull, please donate one or two
* coins to my PayPal account me@daantje.nl
*
* Todo:
* Add open proxy black list scan.
*/

class proxy_detector {

/**
* CONSTRUCTOR
* Set defaults...
*/
function proxy_detector(){
$this->config = array();
$this->lastLog = "";

//set default headers
$this->scan_headers = array(
'HTTP_VIA',
'HTTP_X_FORWARDED_FOR',
'HTTP_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED_FOR_IP',
'VIA',
'X_FORWARDED_FOR',
'FORWARDED_FOR',
'X_FORWARDED',
'FORWARDED',
'CLIENT_IP',
'FORWARDED_FOR_IP',
'HTTP_PROXY_CONNECTION'
);
}


/**
* VOID setHeader( STRING $trigger )
* Set new header trigger...
*/
function setHeader($trigger){
$this->scan_headers[] = $trigger;
}


/**
* ARRAY $triggers = getHeaders( VOID )
* Get all triggers in one array
*/
function getHeaders(){
return $this->scan_headers;
}


/**
* VOID setConfig( STRING $key, STRING $value)
* Set config line...
*/
function setConfig($key,$value){
$this->config[$key] = $value;
}


/**
* MIXED $config = getConfig( [STRING $key] )
* Get all config in one array, or only one config value as a string.
*/
function getConfig($key=''){
if($key)
return $this->config[$key];
else
return $this->config;
}


/**
* STRING $log = getLog( VOID )
* Get last logged information. Only works AFTER calling detect()!
*/
function getLog(){
return $this->lastLog;
}


/**
* BOOL $proxy = detect( VOID )
* Start detection and return true if a proxy server is detected...
*/
function detect(){
$log = "";

//scan all headers
foreach($this->scan_headers as $i){
//proxy detected? lets log...
if($_SERVER[$i])
$log.= "trigger $i: ".$_SERVER[$i]."\n";
}

//let's do something...
if($log){
$log = $this->lastLog = date("Y-m-d H:i:s")."\nDetected proxy server: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])." ({$_SERVER['REMOTE_ADDR']})\n".$log;

//mail message
if($this->getConfig('MAIL_ALERT_TO'))
mail($this->getConfig('MAIL_ALERT_TO'),"Proxy detected at {$_SERVER['REQUEST_URI']}",$log);

//write to file
$f = $this->getConfig('LOG_FILE');
if($f){
if(is_writable($f)){
$fp = fopen($f,'a');
fwrite($fp,"$log\n");
fclose($fp);
}else{
die("<strong>Fatal Error:</strong> Couldn't write to file: '<strong>$f</strong>'<br>Please check if the path exists and is writable for the webserver or php...");
}
}

//done
return true;
}

//nope, no proxy was logged...
return false;
}
}




/**
* Proxy Detector v0.1
* Implementation example.
*
* Mon Sep 18 23:29:47 CEST 2006
* by: me@daantje.nl
*
* Documentation:
* I use this file as an include at the top of some php files
* to block proxy users from the scripts that included this file.
*
* This file is only an example on how to implement the detector class.
* But it could be usefull as is...
*
* Check the remarks in the class for more documentation.
*/

//include detector class, assuming it's in the same directory as this file...
include_once(dirname(__FILE__) . "/proxy_detector.class.php");

//init class
$proxy = new proxy_detector();

//set optional extra triggers, no need to... I think I've got all of them covered in the class...
// $proxy->setTrigger('HTTP_SOME_HEADER_1');
// $proxy->setTrigger('HTTP_SOME_HEADER_2');
//set optional config
// $proxy->setConfig('MAIL_ALERT_TO','me@daantje.nl');
// $proxy->setConfig('LOG_FILE','/home/daantje/public_html/proxy/proxy_detector.log');
//start detect
if ($proxy->detect()) {

//returned true, lets die...
echo "<h1>Proxy detected</h1>";
echo "Please disable your proxy server in your browser preferences or internet settings, and try again.<br><br>";

//parse logged info
echo nl2br($proxy->getLog());

//some credits...
echo "<hr><strong>proxy detector v0.1</strong> - &copy;2006 <a href=\"http://www.daantje.nl\" target=\"_blank\">daantje.nl</a>";

//and do nothing anymore! (but not in my example)
//exit();
}

//else, proceed as normal, put your code here...

darknes666
پنج شنبه 06 تیر 1392, 15:56 عصر
ولی جالب این جاست که نمیشه سایت هایی مثل گوگل یا adobe رو دور زد. می خواستم بدونم اونا چه طور آی پی رو بدست میارن که نمیشه دورشون زد ؟؟؟


میدونستیم که اینجا نبودیم :چشمک:

rezaonline.net
جمعه 11 مرداد 1392, 20:08 عصر
در ها رو براحتی میشه جعل کرد اون وقت دیگه نیوک متوجه نمیشه که همه درخواست ها از یکجا ارسال میشه .
هربار درخواست نوع مرورگر و آیپی و نوع سیستم عامل و رزولوشن صفحه رو عوض کنید توی هدر بعد درخواست و ارسال کنید.
نیوک و وردپرس و با همین روش به راحتی میشه دور زد
هدر های HTTP_CLIENT_IP یا HTTP_X_FORWARDED_FOR و ... رو میتونید جعل کنید اما REMOTE_ADDR رو خیر .
با عرض تاسف باید بگم 99درصد سایتها برای چک کردن آی پی ،
$_SERVER['REMOTE_ADDR']; رو چک میکنن پس قضیه جعل کردن آی پی منتفیه .

MRmoon
جمعه 11 مرداد 1392, 22:51 عصر
هدر های HTTP_CLIENT_IP یا HTTP_X_FORWARDED_FOR و ... رو میتونید جعل کنید اما REMOTE_ADDR رو خیر .
با عرض تاسف باید بگم 99درصد سایتها برای چک کردن آی پی ،
$_SERVER['REMOTE_ADDR']; رو چک میکنن پس قضیه جعل کردن آی پی منتفیه .

چرا با عرض تاسف؟

saeedvir
شنبه 12 مرداد 1392, 07:18 صبح
اینم توجه داشته باشید که


$_SERVER['REMOTE_ADDR']

گاهی وقت ها چند تا آی پی داخلش هست !!!

MMSHFE
شنبه 12 مرداد 1392, 08:17 صبح
ولی جالب این جاست که نمیشه سایت هایی مثل گوگل یا adobe رو دور زد. می خواستم بدونم اونا چه طور آی پی رو بدست میارن که نمیشه دورشون زد ؟؟؟
کی گفته نمیشه این سایتها رو دور زد؟ روش کار این سایتها اینطوره که وقتی وارد میشین، یک کوکی و سشن برای شما ایجاد میکنن و توی اون، IP شما رو میگذارن. حالا اگه IP شما عوض بشه، بازهم از توی IP که توی کوکی هست، میتونن بفهمن از کجا وصل شدین. برای اطمینان، ابتدا کوکیهای ذخیره شده در مرورگر رو حذف کنید و مرورگر رو ببندید و بعد به V-P-N متصل بشین و مرورگر رو باز کرده و وارد http://developer.android.com بشین. خواهید دید که این سایت که در حالت عادی برای ایرانیها باز نمیشه، بدون کوچکترین مشکلی باز خواهد شد. ضمناً ابراز تأسف آقا رضا هم بخاطر مشکلات امنیتی REMOTE_ADDR هست که قبلاً زیاد درموردش بحث شده و eshpilen هم توی سایتش یک مقاله درموردش گذاشته.