PDA

View Full Version : مبتدی: گرفتن آی پی کاربر



ali_ip3
پنج شنبه 19 دی 1392, 00:42 صبح
برای نمایش آی پی کاربر از چه دستوری باید استفاده کنیم؟

trasilver
پنج شنبه 19 دی 1392, 02:12 صبح
روش های بسیار و مختلفی هست.
بهترین این کد هست اما آی پی واقعی رو نشون نمیده! یعنی از ف-ی-ل-تر شکن استفاده کرده باشه آی پی اون رو نشون میده.

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

ali_ip3
پنج شنبه 19 دی 1392, 12:10 عصر
این کد رو وقتی توی لوکال اجرا میکنم 127.0.0.1 رو خروجی میده.

همین کد درسته؟ مگه نباید آی پی منو نشون بده؟

کامبیز اسدزاده
پنج شنبه 19 دی 1392, 12:17 عصر
این کد رو وقتی توی لوکال اجرا میکنم 127.0.0.1 رو خروجی میده.

همین کد درسته؟ مگه نباید آی پی منو نشون بده؟

خب IP محلی شما رو سیستمتون 127.1.1.1 هست دیگه عزیز من.
REMOTE_ADDR چیرو بر میگردونه ؟ کسی که ریموت هست دیگه...

ali_ip3
پنج شنبه 19 دی 1392, 12:22 عصر
درست میفرمایید اما من دستوری رو میخوام که آی پی کاربر رو بده
ببینید این سایتو دوست من :
http://www.whatismyip.com/
چطوری آی پی کاربر رو نشون میده؟
همین کد رو میخواستم

کامبیز اسدزاده
پنج شنبه 19 دی 1392, 12:24 عصر
درست میفرمایید اما من دستوری رو میخوام که آی پی کاربر رو بده
ببینید این سایتو دوست من :
http://www.whatismyip.com/
چطوری آی پی کاربر رو نشون میده؟
همین کد رو میخواستم

شما همین کد رو روی هاست اجرا کنید مطمن باشید همون چیزی که لازم دارید رو بهتون خواهد داد ! :)
چون شما روی لوکال هستید نمیتونید IP اینترنتی خودتون رو بگیرید ولی روی هاست که باشه قشنگ IP کاربر رو بهتون بر میگردونه.

ali_ip3
پنج شنبه 19 دی 1392, 12:28 عصر
تست کردم همینطور بود که فرمودید
از شما دو دوست عزیز ممنونم .

Yashar1989
دوشنبه 23 دی 1392, 23:04 عصر
سلام
چون توی این تاپیک بحث شده دیگه تاپیک جدید نزدم
این کدی که دادید اگر با کاربر با پروکسی باشه آیپی پروکسی رو نشون میده یا آیپی لوکال کاربر رو نشون میده؟

metal gear solid 4
دوشنبه 23 دی 1392, 23:34 عصر
// Function to get the client ip address
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'&quot;);
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;
}

Yashar1989
سه شنبه 24 دی 1392, 00:13 صبح
// Function to get the client ip address
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'&quot;);
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;
}


خط به خطشو میشه توضیح بدی که چیکار میکنه؟
چیزی از کدی که گذاشتی متوجه نشدم

eshpilen
سه شنبه 24 دی 1392, 09:14 صبح
// Function to get the client ip address
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'&quot;);
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;
}



مراقب حفرهء امنیتی اینطور کدها باشید: www.hamidreza-mz.tk/?p=859 (http://www.hamidreza-mz.tk/?p=859)

تمام مواردی که شما در کدهاتون استفاده کرده اید، براحتی از سمت کلاینت قابل ست کردن و جعل هستن.
البته بین این موارد، کلاینت فقط REMOTE_ADDR رو نمیتونه جعل کنه، ولی اونم ممکنه IP یک پراکسی باشه که بین کلاینت و شما واسطه شده.

metal gear solid 4
سه شنبه 24 دی 1392, 12:59 عصر
انقدر مهم نیست که جعل بشه یا نه. آیپی چیزیه که مدام تغییر میکنه. :) بخوایم نخوایم باید باهاش کنار بیایم.

eshpilen
سه شنبه 24 دی 1392, 13:07 عصر
پس اصلا شما برای چی گرفتن IP واقعی کاربر اینقدر براتون مهمه؟
اگر جایی هست که مهمه و روش حساب میشه، پس امکان جعل شدنش هم مهمه و باید درنظر گرفت.
در بعضی کاربردها هست که واقعا مهمه.
مثلا وقتی سیستم بلاک IP داریم، مثلا بخاطر جلوگیری از حمله های دیکشنری و حدس و Brute-force روی فرم لاگین، اگر یک چنین کدی رو برای تشخیص IP بکار برده باشید هکرهای حرفه ای میتونن براحتی سیستم شما رو دور بزنن و هرچقدر میخوان username و password تست کنن، و حتی انوع جدیدی از حمله رو انجام بدن: مثلا میتونن کاری کنن IP کاربران واقعی شما بلاک بشه، بدون اینکه بصورت واقعی به اون IP ها دسترسی داشته باشن (این میشه حملهء DOS خیلی راحت و سریع با استفاده از باگ امنیتی سیستم شما).

امکان تغییر دادن یک چیزه، امکان جعل به این سادگی و عملا بدون هیچ محدودیت و هزینه ای، چیز دیگه!

metal gear solid 4
سه شنبه 24 دی 1392, 13:16 عصر
پس اصلا شما برای چی گرفتن IP واقعی کاربر اینقدر براتون مهمه؟
اگر جایی هست که مهمه و روش حساب میشه، پس امکان جعل شدنش هم مهمه و باید درنظر گرفت.
در بعضی کاربردها هست که واقعا مهمه.
مثلا وقتی سیستم بلاک IP داریم، مثلا بخاطر جلوگیری از حمله های دیکشنری و حدس و Brute-force روی فرم لاگین، اگر یک چنین کدی رو برای تشخیص IP بکار برده باشید هکرهای حرفه ای میتونن براحتی سیستم شما رو دور بزنن و هرچقدر میخوان username و password تست کنن، و حتی انوع جدیدی از حمله رو انجام بدن: مثلا میتونن کاری کنن IP کاربران واقعی شما بلاک بشه، بدون اینکه بصورت واقعی به اون IP ها دسترسی داشته باشن (این میشه حملهء DOS خیلی راحت و سریع با استفاده از باگ امنیتی سیستم شما).

امکان تغییر دادن یک چیزه، امکان جعل به این سادگی چیز دیگه!
بحث جعل شدنه که مهم نیست. خود آیپی کاربردهای خوبی داره اما جعل شدنش. تغییرش به راحتی آب خوردنه.
وقتی رباتی به سرور شما فرستاده میشه تا Brutal Force انجام بده. شما Captcha استفاده میکنی. سوال امنیتی میپرسی. و یا اصلاً از طریق فایروال خود سرور تنظیمات انجام میدی. و یا نهایتاً درون کد خودت یک آیپی که در یک دوره ی کوتاهی درخواست زیادی داره رو شناسایی میکنی. من که نمیگم قابل شناسایی نیست. قابل شناساییه و به راحتی هم میشه جلوشو گرفت. اما همین ربات یا اسکریپت میتونه آیپیشو عوض کنه.
خب وقتی عوض کنه روز از نو روزی از نو. دوباره باید شناسایی و مسدود بشه. عملاً هیچ کار خاصی صورت نمیگیره.
بحث سر همینه که جعل کردن یک آیپی مهم نیست. شناساییش مهمه که با کدهای بالا شناسایی میشه. حالا با این آیپی جعل شده هر کاری بکنه. از طرف شما شناسایی شده. :) و نوبت تدابیر شماست.

ضمناً جلوگیری از حملات DOS و DDOS به این راحتی که شما عرض میکنید نیست. اگر حمله واقعاً قوی باشه قبل از انجام هر کاری سیستمتون ممکنه از پا در بیاد. صرفاً به کد خودتون بسنده کنید نمیتونی از این حملات جلوگیری کنید.

Yashar1989
سه شنبه 24 دی 1392, 13:41 عصر
این کدی که گذاشتی رو میشه خط به خطشو توضیح بدی که چیکار میکنه و چرا اینقدر if و else داره؟

eshpilen
سه شنبه 24 دی 1392, 14:02 عصر
بحث جعل شدنه که مهم نیست. خود آیپی کاربردهای خوبی داره اما جعل شدنش. تغییرش به راحتی آب خوردنه.
گفتم که! جعل شدن با تغییر خیلی فرق میکنه.
مثلا یوقت هست شما برای امنیت تعیین کردید که فلان کار فقط وقتی درخواست از فلان آیپی میاد اجرا بشه. اینجا هکرها نمیتونن IP استاتیک مورد نظر رو بدست بیارن، حالا هرچقدر IP در دسترس داشته باشن و تغییر بدن بازم نمیتونن کاری بکنن، ولی اگر کدی رو که شما گذاشته باشی کسی برای تشخیص IP بکار برده باشه و حواسش به امکان جعلش نبوده باشه اونوقت هکرها میتونن براحتی سیستم شما رو فریب بدن.


وقتی رباتی به سرور شما فرستاده میشه تا Brutal Force انجام بده. شما Captcha استفاده میکنی.
کپچا به تنهایی توجیه این نمیشه که امکان بلاک IP رو در سیستم نذاری. این امکان در یک کار حرفه ای بصورت آپشنال و قابل کانفیگ باید موجود باشه تا در شرایط لازم استفاده بشه. کپچا ممکنه کرک بشه (همونطور که بیشتر کپچاها تاحالا قابل کرک شناخته شدن و خیلی هاشون خیلی هم راحت و سریع) و همچنین از کاربران انسانی هم جلوگیری نمیکنه. عمله های چینی هستن که به ازای حل هر کپچا مبلغ ناچیزی دستمزد میگیرن! خود هکر هم میتونه به این شکل تا حدی که وقت و حوصله داره یوزرنیم و پسورد تست کنه یا کارهای دیگر برای اهداف دیگر.


سوال امنیتی میپرسی.
این بحثها از این حرفا گسترده تر و پیچیده تره. فقط یک راه حل ثابت برای تمام سناریوها هم کافی یا ممکن نیست. اغلب چند سیستم مختلف در چندجا برای عملیات مختلف باید باشه؛ بعضی وقتا هم در یک جا همزمان از چند روش باید استفاده بشه برای رسوندن ضریب امنیت و پارامترهای دیگر به یک حد مناسب.
بحث بلاک IP فقط هم به فرم لاگین محدود نمیشه که بگیم سوال امنیتی میپرسی! بعضی جاها هست اصلا یوزر و پسوردی درکار نیست، بعضی جاها اصلا کاربر انسانی پشتش نیست که بخوای ازش سوال امنیتی بپرسی، بلکه میخوای IP رو بلاک کنی فقط بخاطر امنیت و جلوگیری از سوء استفاده. حالا اگر IP رو اشتباهی بلاک کنی، اونوقت ممکنه دردسرش برای خودت بیشتر باشه و عملا هدف هکر رو محقق کرده باشی.


و یا اصلاً از طریق فایروال خود سرور تنظیمات انجام میدی. و یا نهایتاً درون کد خودت یک آیپی که در یک دوره ی کوتاهی درخواست زیادی داره رو شناسایی میکنی. من که نمیگم قابل شناسایی نیست.
:لبخندساده:


اما همین ربات یا اسکریپت میتونه آیپیشو عوض کنه.
خب وقتی عوض کنه روز از نو روزی از نو. دوباره باید شناسایی و مسدود بشه. عملاً هیچ کار خاصی صورت نمیگیره.
به این سادگی هم نیست.
IP نامحدود هم همچین ارزان و راحت در دسترس هرکسی هم نیست.
انواع افراد مزاحم یا نفوذگر و هکر داریم در سطوح دانش و توانایی و امکانات فیزیکی مختلف و انگیزه ها و حوصله های مختلف.
سیستم بلاک IP میتونه جلوی خیلی از این افراد و خیلی حمله ها رو بگیره یا عملا اونقدر اونا رو پرهزینه و زمانبر میکنه که دیگه براشون صرف نمیکنه. البته سیستم بلاک IP خودش ضعفهایی هم داره و میتونه مورد سوء استفاده قرار بگیره و برای حمله های دیگری استفاده بشه، اما بهرحال خیلی جاها هم بسته به شرایط و نیازشون هست و میخوان. من در پروژهء خودم این سیستم رو بصورت کاملا قابل کانفیگ و تنظیم گذاشتم که میشه خاموش و روشن کرد و پارامترهاش رو تغییر داد.


بحث سر همینه که جعل کردن یک آیپی مهم نیست. شناساییش مهمه که با کدهای بالا شناسایی میشه. حالا با این آیپی جعل شده هر کاری بکنه. از طرف شما شناسایی شده. :) و نوبت تدابیر شماست.
lol
حرفایی میزنی ها!
شناسایی چی مهمه؟
وقتی طرف هویتی اصلا نداره و هر ثانیه میتونه یک IP مختلف که حتی واقعا در اختیار خودش نیست ست کنه، دیگه شناسایی و تدبیر یعنی چی؟
البته در بعضی سناریوها میشه از اون کدها هم بصورت امن و مفیدی استفاده کرد. چیزی که من خواستم بگم این بود که حواستون باشه که قابل جعل هم هست و نمیشه در خیلی کاربردهای دیگر بهش اعتماد کرد و اگر در خیلی کاربردها بهش اتکا کنید عملا حفره های امنیتی در برنامه بوجود میاد.


ضمناً جلوگیری از حملات DOS و DDOS به این راحتی که شما عرض میکنید نیست. اگر حمله واقعاً قوی باشه قبل از انجام هر کاری سیستمتون ممکنه از پا در بیاد. صرفاً به کد خودتون بسنده کنید نمیتونی از این حملات جلوگیری کنید.
بازم این رو فراموش کردی که هم افراد هم انگیزه ها و جدیت و هم منابعی که در اختیار دارن متفاوت است و محدودیت داره. اون کدی که شما گذاشتی اگر با اون بخوان کار کنن هر بچه ای سه سوت میتونه سیستم شما رو DOS کنه، با کمترین زمان، کمترین هزینه، کمترین امکانات، کمترین سواد، کمترین انگیزه، ... .
حمله های داس که مثلا با بات نت انجام میشن روی هدفهای ارزشمند و توسط افراد و گروههای خاص با اهداف حساب شده انجام میشن و در تمام مدت حمله هم مدام اونا دارن منابع ارزشمند و محدود خودشون رو برای جلوگیری از دسترسی به سایت شما اختصاص میدن. ولی اونکه من گفتم حفرهء امنیتی سیستم خود شماست و خیلی ساده و کم هزینه و عمومیه.

جعل با تغییر فرق میکنه.
اینو چند بار بگم متوجه بشی؟
IP تغییر میکنه ولی واقعا از چنان IP ای عمل غیرمجاز یا مشکوک صورت گرفته. بهرحال اون IP یجوری دست هکر بوده و ازش استفاده کرده.
اما IP جعل شده این محدودیت رو نداره و هزینه و محدودیت تعداد هم نداره.

metal gear solid 4
سه شنبه 24 دی 1392, 14:31 عصر
از نظر سیستم من، زمانی که یک آیپی تغییر میکنه فرقی نمیکنه آیپی با جعل کردن تغییر کرده یا بی جعل کردن. نهایتاً آیپی تغییر کرده. وظیفه ی سیستم طراحی شده ی منه که باید آیپی کاربر رو شناسایی کنه. چه آیپی جعل شده چه آیپی اصلی. این کش و قوس دادن به حرفا الکیه.

من هم میدونم این امکان وجود داره که کپچا هم شناسایی بشه، اما خیلی به ندرت. کپچا اگر به این شل و ولی که شما میگی بود کلاً کنسلش میکردند. از کپچاهای استاندارد استفاده کنید. یا اگه خیلی حساس هستید یک کپچا بنویسید که درش حروف فارسی باشی. کی میخاد براش رباتی بنویسه که پردازش تصویر انجام بده. کارگرای چینی؟ سازمان CIA آمریکا؟ واقعاً ممکنه؟
شما خودت تعصب فکری در زمینه ی امنیت داری. هر زمان سیستمی که شما مینویسی به قدری مهم شد که به انواع اقسام مختلف تصمیم به شکستن قفل کپچا کردند. حملات DDOS روی سیستم شما انجام دادند. هر ثانیه آیپی تغییر دادند اون موقع باید به فکر بهینه سازی بود. میرسیم به این حرف که : .Pre optimization is root of all evil

شما کلاً عادت داری به تخیل بافی و داستان نویسی :)

metal gear solid 4
سه شنبه 24 دی 1392, 14:33 عصر
این کدی که گذاشتی رو میشه خط به خطشو توضیح بدی که چیکار میکنه و چرا اینقدر if و else داره؟
دوست عزیز توضیحاتش کم نیست. به گوگل رجوع کنید.

Yashar1989
سه شنبه 24 دی 1392, 14:47 عصر
دوست عزیز توضیحاتش کم نیست. به گوگل رجوع کنید.
خوب همین کدی که اینجا گذاشتید رو دیشب تو لینک زیر دیدم:
http://stackoverflow.com/questions/15699101/get-client-ip-address-using-php
متاسفانه چون دسترسی ندارم نمیتونم سوال بپرسم
گفتم شاید شما بدونید و راهنمایی کنید

باز هم ممنون که در بحث شرکت کردید

eshpilen
سه شنبه 24 دی 1392, 16:43 عصر
از نظر سیستم من، زمانی که یک آیپی تغییر میکنه فرقی نمیکنه آیپی با جعل کردن تغییر کرده یا بی جعل کردن. نهایتاً آیپی تغییر کرده. وظیفه ی سیستم طراحی شده ی منه که باید آیپی کاربر رو شناسایی کنه. چه آیپی جعل شده چه آیپی اصلی. این کش و قوس دادن به حرفا الکیه.

من هم میدونم این امکان وجود داره که کپچا هم شناسایی بشه، اما خیلی به ندرت. کپچا اگر به این شل و ولی که شما میگی بود کلاً کنسلش میکردند. از کپچاهای استاندارد استفاده کنید. یا اگه خیلی حساس هستید یک کپچا بنویسید که درش حروف فارسی باشی. کی میخاد براش رباتی بنویسه که پردازش تصویر انجام بده. کارگرای چینی؟ سازمان CIA آمریکا؟ واقعاً ممکنه؟
شما خودت تعصب فکری در زمینه ی امنیت داری. هر زمان سیستمی که شما مینویسی به قدری مهم شد که به انواع اقسام مختلف تصمیم به شکستن قفل کپچا کردند. حملات DDOS روی سیستم شما انجام دادند. هر ثانیه آیپی تغییر دادند اون موقع باید به فکر بهینه سازی بود. میرسیم به این حرف که : .Pre optimization is root of all evil

شما کلاً عادت داری به تخیل بافی و داستان نویسی :)
منکه نفهمیدم تو چی میگی دست آخر.
همش میگی فرقی نمیکنه و مهم نیست و خلاصه کلی گویی و مبهم گویی.
تو حداقل یه سناریو واقعی و دقیق بگو تا بررسیش کنیم ببینیم واقعا آیا فرقی نمیکنه و مهم نیست؟
آیپی کاربر رو دقیقا برای چی در چه عملیاتی میگیری با این نمونه کدهایی که گذاشتی و بر اساسش چکار میکنی؟
اینو بگو تا روش بصورت دقیقتر و روشنتر و تخصصی بشه پیش رفت.
همینطوری IP رو نمیگیری فقط لاگ کنی که. یه کاری باهاش میکنی حتما یه فرضی یه محدودیتی یه تصمیمی عکس العملی چیزی داره سیستم بر اساسش. دقیق بگو واسه چی چطوری استفاده میکنی تا بهت بگم.

metal gear solid 4
سه شنبه 24 دی 1392, 20:07 عصر
مهم نیست و فرقی نمیکنه اصلاً مبهم گویی نیست. من توضیحاتی که باید رو دادم. یه سری مسائل حل شدست. شما روی این گونه مسائل وسواس فکری دارید.

eshpilen
چهارشنبه 25 دی 1392, 07:58 صبح
lol
دیدی حالا که گفتم مثال واقعی بزن تا روی یک مورد روشن و دقیق کاملا بررسیش کنیم طفره رفتی؟
هیچکس نباید از چنین درخواست و بحثی طفره بره. چون تازه بحث میخواست کاملا روشن و فنی و قابل اثبات بشه.
پس معلوم شد که هدفت روشن شدن واقعیت و یادگیری نبود.
خوش باشی :چشمک:

metal gear solid 4
چهارشنبه 25 دی 1392, 13:41 عصر
من بیکار نیستم داستان نویسی کنم اینجا. کسی مشکلی داشته باشه سعی میکنم مشکل رو حل کنم. ;)