PDA

View Full Version : حرفه ای: گرفتن ip اصل



beh3000
شنبه 27 دی 1393, 15:15 عصر
سلام

برای گرفتن آی پی کلاین یک روش که همه میدونم استفاده از REMOTE_ADDR هست ولی توی همین فروم یک جایی بود که حرف از ضعف امنیتی این مورد بود ... آیا این درسته ؟ با کلی جستجو یک راه دیگه برای گرفتن آی پی پیدا کردم ولی هنوز تست نکردمش میخوام بدونم که کدوم ایمن هست ... ضعف امنیتی اگه دارن بگید ...


$ipAddress = $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}


نکته : توی این کد اومده اول با REMOTE_ADDR آی پی رو گرفته بعد چک کرده که HTTP_X_FORWARDED_FOR وجود داره یا نه ! یعنی ممکنه اصلا وجود نداشته باشه ؟ یعنی همه جا نمیشه از این مورد برای گرفتن آی پی استفاده کرد ؟

kabootar_y
شنبه 27 دی 1393, 22:31 عصر
میتونی از این تابع استفاده کنی. :لبخندساده:






function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress;}

ciph3r
شنبه 27 دی 1393, 22:40 عصر
نه داداشالکی گفتن و اگر آسیب پذیری هم داشته باشه به صورت Logic هستکه نمیشه کاریش کردبا خیال راحت ازش استفاده کن داداش گلم

Unique
شنبه 27 دی 1393, 22:55 عصر
سوالتون جالبه !

توی همین فروم یک جایی بود که حرف از ضعف امنیتی این مورد بود
در مورد IP فکر نمیکنم چون یکسری از این موارد توسط وب سرور سِت میشن و امکان fake کردنشون وجود نداره.

ببینید ، به صورت نرمال REMOTE_ADDR برای PHP ست میشه تا بتونه تشخیص بده Ip کلاینت چیه. X-Forwarded-For و HTTP_CLIENT_IP مربوط به زمانی میشه که درخواست از طریق یک یا چند Proxy به دست شما میرسه که در این حالت Hp اصلی کاربر توی این Header ها خواهد بود. البته REMOTE_ADDR احتمالا خالی نیست و Ip مربوط به proxy را خواهد داشت (خیلی مطمئن نیستم
چون تستش نکردم اما به احتمال زیاد همینه)

در کل اکثر کاربران به صورت Direct به سایت شما میان و نیاز نیست این بررسی ها انجام بشه مگه اینکه واقعا این موضوع IP اهمیت خاصی داره. در ضمن هیچ تضمینی نیست که Proxy Server این Header ها را برای وب سرور ارسال کنه.

hamidhassas
یک شنبه 28 دی 1393, 10:12 صبح
http://www.hassas-computer.com/images/images_upload/matlab/amuzesh/Real_IP.jpg
بدست آوردن آدرس IP واقعی کاربران با PHP به صورت ایمن (http://www.hassas-computer.com/preview.php?post=1989)

Mohammadsgh
یک شنبه 28 دی 1393, 11:42 صبح
این لینک ها هم میتونن بهتون کمک کنن
http://www.xpertdeveloper.com/2011/09/get-real-ip-address-using-php/
https://www.virendrachandak.com/techtalk/getting-real-client-ip-address-in-php-2/
http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html