• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

تشخیص دهنده معتبر صفحه ارجاع دهنده

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
برای تشخیص مبدا صفحه ورودی به یک سایت اغلب از $_SERVER['HTTP_REFERER'] استفاده می شه ولی این اصلن مطمئن نیست ! سایت های ثبت آمار که لیستی از سایت های ارجاع دهنده را برای ما نمایش می دهند دارند از همین دستور استفاده می کنند یا راه مطمئن تری هم هست ؟
مثلن گوگل آنالیز داره از چی استفاده میکنه ؟
راه مطمئن برای یافتن مبدا ورود کاربر چیه ؟؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
47
تولید آدرس referrer در مرورگر اتفاق میافته نه روی سرور. یعنی مرورگر هست که میتونه تشخیص بده که کاربر با کلیک بر روی چه لینکی و در چه سایتی درخواست دیدن صفحه شما رو کرده. بنابراین سرور و به تبع اون کد PHP شما هیچ کنترلی بر روی دیتای ارسالی از مرورگر نداره. مرورگر هم محیطی هست که در دسترس کاربر هست و هر اتفاقی ممکنه اونجا بیافته. از تروجان و ویروس گرفته تا مرورگرهای قلابی و خیلی چیزهای دیگه.
 

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
تولید آدرس referrer در مرورگر اتفاق میافته نه روی سرور. یعنی مرورگر هست که میتونه تشخیص بده که کاربر با کلیک بر روی چه لینکی و در چه سایتی درخواست دیدن صفحه شما رو کرده. بنابراین سرور و به تبع اون کد PHP شما هیچ کنترلی بر روی دیتای ارسالی از مرورگر نداره. مرورگر هم محیطی هست که در دسترس کاربر هست و هر اتفاقی ممکنه اونجا بیافته. از تروجان و ویروس گرفته تا مرورگرهای قلابی و خیلی چیزهای دیگه.
بله می دونم که میشه هر مشخصاتی را برای مرورگر ارسال کرد . پس برای خوندن اطلاعات referre این کد قابل اعتماد هست فقط اطلاعاتی که مرورگر ها یا شبیه ساز مرورگر ها می فرستند ممکنه درست نباشه .
 

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
تولید آدرس referrer در مرورگر اتفاق میافته نه روی سرور. یعنی مرورگر هست که میتونه تشخیص بده که کاربر با کلیک بر روی چه لینکی و در چه سایتی درخواست دیدن صفحه شما رو کرده. بنابراین سرور و به تبع اون کد PHP شما هیچ کنترلی بر روی دیتای ارسالی از مرورگر نداره. مرورگر هم محیطی هست که در دسترس کاربر هست و هر اتفاقی ممکنه اونجا بیافته. از تروجان و ویروس گرفته تا مرورگرهای قلابی و خیلی چیزهای دیگه.
وقتی شما با یک کد جاوا اسکریپت صفحه را ریدایرکت میکند . $_SERVER['HTTP_REFERER قادر نیست تشخیص بدید شما از کجا آمدید . در این مورد چکار باید کرد ؟؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
47
وقتی شما با یک کد جاوا اسکریپت صفحه را ریدایرکت میکند . $_SERVER['HTTP_REFERER قادر نیست تشخیص بدید شما از کجا آمدید . در این مورد چکار باید کرد ؟؟
به نظر میاد که نمیشه کاری کرد. شما افزونه HTTP_FOX رو برای فایرفاکس داونلود کن و ضمن ریدایرکت شدن هدرهای ارسالی رو مونیتور کن. متوجه میشی که هیچ اطلاعاتی در خصوص صفحه اولیه به صفحه ای که شما میخوای توش referrer رو چک کنی ارسال نمیشه.
 

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
به نظر میاد که نمیشه کاری کرد. شما افزونه HTTP_FOX رو برای فایرفاکس داونلود کن و ضمن ریدایرکت شدن هدرهای ارسالی رو مونیتور کن. متوجه میشی که هیچ اطلاعاتی در خصوص صفحه اولیه به صفحه ای که شما میخوای توش referrer رو چک کنی ارسال نمیشه.
ایا با این حساب میشه تدبیری برا داشتن یکتشخیص دهنده معتبر صفحه ارجاع دهنده اندیشید؟ به عنوان مثال یک کد جاوا اسکریپت در صفحه مبدا یا هر راه دیگه ای که ممکنه وجود داشته باشه. من دارم سعی میکنم تشخیص بدم کاربر دقیقا از کدام صفحه مبدا به صفحه مقصد ریدایرکت شد.
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
47
من این موضوعی که شما میگی رو امتحان کردم:

:a.html​
کد:
<a href='b.php'>Link</a><br />
<a href='#' onclick="location.href='b.php'; return false;">Redirect 1</a><br />
<a href='#' onclick="location.replace('b.php'); return false;">Redirect 2</a><br />

:b.php​
کد:
Javascript: <script> document.write(document.referrer); </script>
<br />
PHP: <? echo $_SERVER['HTTP_REFERER']; ?>

برای من هر سه حالت به خوبی صفحه ارجاع دهنده رو نشون میداد. شما مطمئنی همه چیز رو داری درست انجام میدی؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
47
آهان پیدا کردم علت این تفاوت رو. در فایرفاکس درست کار میکنه اما در ie6 و ie7 نه.

در مورد اینکه میخوای تو کد صفحه مبدأ (سایتی غیر از سایت خودت) کد جاوااسکریپت بذاری باید فنون هک کردن بلد باشی :)
یک راه دیگه هم اینه که تروجان بفرستی رو کامپیوتر کاربر تا history براوزر رو بخونه و ارسال کنه.

همونطور که میبینی راه حل واقعی وجود نداره چون مطابق چیزی که اول بحث صحبت کردیم referrer یک داده مربوط به مرورگر و روی کامپیوتر کاربر هست که شما هیچ کنترلی رو اون محیط نداری.
 

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
آهان پیدا کردم علت این تفاوت رو. در فایرفاکس درست کار میکنه اما در ie6 و ie7 نه.

در مورد اینکه میخوای تو کد صفحه مبدأ (سایتی غیر از سایت خودت) کد جاوااسکریپت بذاری باید فنون هک کردن بلد باشی :)
یک راه دیگه هم اینه که تروجان بفرستی رو کامپیوتر کاربر تا history براوزر رو بخونه و ارسال کنه.

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

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
47
اگه امکان اینو داشته باشی که در صفحه مبدآ کد جاوااسکریپت اجرا کنی میتونی تو همون صفحه کلیک شدن روی هر لینکی رو مانیتور کنی. کدش یه چیزی شبیه به این میشه:

کد:
for (var i = 0; i < document.links.length; i++) {
	document.links[i].addEventListener('click', function() {
			...............
		}, false);
}

به جای سه نقطه ها کدی رو بذاری که اطلاعات مورد نیازت رو بفرسته به سرور. برای انتقال به صفحات دیگه بدون کلیک بر روی لینک هم میتونی از onbeforeunload استفاده کنی.
 

mehrzad22

Registered User
تاریخ عضویت
8 نوامبر 2007
نوشته‌ها
687
لایک‌ها
95
اگه امکان اینو داشته باشی که در صفحه مبدآ کد جاوااسکریپت اجرا کنی میتونی تو همون صفحه کلیک شدن روی هر لینکی رو مانیتور کنی. کدش یه چیزی شبیه به این میشه:

کد:
for (var i = 0; i < document.links.length; i++) {
	document.links[i].addEventListener('click', function() {
			...............
		}, false);
}

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