آژانس هواپیماییexchanging

رديابي کاربر در php

شروع موضوع توسط sanaz_js ‏7 آگوست 2004 در انجمن PHP

  1. sanaz_js

    sanaz_js کاربر تازه وارد

    تاریخ عضویت:
    ‏5 آگوست 2004
    نوشته ها:
    6
    تشکر شده:
    0
    chetor mishe karbaran ra dar PHP radyabi kard ta khata naravand masalan be nomarate khod dast peyda konan va taqireshon bedan
     
  2. miladkdz

    miladkdz کاربر تازه وارد

    تاریخ عضویت:
    ‏30 آگوست 2003
    نوشته ها:
    176
    تشکر شده:
    0
    محل سکونت:
    Tehran, Ekbatan
    تا اونجا كه من فهميدم...منظور شما كنترل دسترسي كاربران بيده! خوب با يه لاگ اين ساده و كوكي و اينا حله! ولي به همين سادگيا هم نيست!
    توضيح بيشتر لطفا!
     
  3. sanaz_js

    sanaz_js کاربر تازه وارد

    تاریخ عضویت:
    ‏5 آگوست 2004
    نوشته ها:
    6
    تشکر شده:
    0
    bebekhahida maslan yek kesi be jaye modire site bere 2 site va alaki username password vared kone maslan ta bishtar az 3 bar ke bekhad vared kone yek jori barname qofl kone va dige password nashe vared kard ya karaye dige mioonid behem komak konid?
     
  4. amirsung

    amirsung کاربر تازه وارد

    تاریخ عضویت:
    ‏28 نوامبر 2003
    نوشته ها:
    210
    تشکر شده:
    0
    محل سکونت:
    Madrid, Spain
    كدش خيلي آسونه.. بايد يك session تعريف كرد و با هر بار لاگين كردن طرف يك عدد مقدارش رو افزايش داد. وقتي از يك حدي مثلا 3 بزرگتر شد با دستور die اسكريپت رو قفل كرد و از اجراي مجددشش جلوگيري كرد. هر چند اگه نام كاربري و كلمه ي عبور مناسب باشه با هزار بار لاگين كردن با كلمات مختلف هم فرد مزاجم نميتونه وارد سايت بشه..

    در ضمن دخترا رو چه به كدنويسي.. ظرفها نشسته مانده اند و سبزي ها پاك نشده.
     
  5. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
    آدم لذت می بره که اینقدر انسان های متخصص اینجا می بینه.
    شما هایی که اینقدر دم از کد ساده می زنید، بفرمایید توضیح بدید ببینم چکار می کنید.
    جناب امیرسونگ واقعا فکر می کنی روشی که گفتی درسته؟؟ خیلی روش کامل و دقیقی بود!!!
    آخه عزیز من، شمایی که درک درستی از اینترنت و وب و نحوه ارتباطات اینترنتی نداری...... حالا توضیح دادنت در حد خودت درست و منطقی، ولی چرا دم از آسونی این مطلب می زنی و به نوعی سائل رو زیر سوال می بری؟؟ چرا در آخر به دختر جماعت توهین می کنی (امیدوارم خیال واهی برت نداره، همه دخترا مال شما ها) اگر می خواهی سوال جواب بدی و فکر می کنی بلدی و می تونی کمک کنی، مثل آدم، بدون غرور، بیا جواب بده.

    موفق باشید، امید

    پ.ن: اگر فکر می کنی این الگوریتمی که دادی درسته، بسم الله، یکی بساز که من در ۱ ثانیه ۵۰۰۰ تا درخواست بدون کنترل ۳ کلیک بهش بدم.
     
  6. ghese

    ghese کاربر تازه وارد

    تاریخ عضویت:
    ‏11 جولای 2004
    نوشته ها:
    77
    تشکر شده:
    0
    بابا اميد جون چرا اينقدر عصباني هستي :eek:
    بيخيال :D
    حالا مي شه جدا هر كس بلده يك توضيحي بده راجب اين موضوع
    واسه منم جالب دونستنش
    ممنون
     
  7. amirsung

    amirsung کاربر تازه وارد

    تاریخ عضویت:
    ‏28 نوامبر 2003
    نوشته ها:
    210
    تشکر شده:
    0
    محل سکونت:
    Madrid, Spain
    خيلي خوب.. وقتي گفتم با session سردستي ترين راه حلو گفتم. وگرنه با cookie يا کنترل IP شايد بهتر بشه. در هر حال کاربر مزاحم ميتونه دور بزنه و بيش از اون تعدادي که مدنظر ماست با يوزر/پاس هاي مختلف لاگين کنه. تنها کاري که ما ميتونيم بکنيم اينه که کار رو براش مشکل کنيم.
    - اگه از session استفاده کنيم، مجبور ميشه مرورگرشو ببنده و دوباره باز کنه.
    - اگه از cookie استفاده کنيم مجبور ميشه delete cookies کنه.
    - اگه از ip استفاده کنيم مجبوره از proxy استفاده کنه يا از connection هاي مختلف استفاده کنه.

    اين هم کدي که خواسته بوديد با session کار کنه. کاملا مطمئن و بدون سوراخ.
    اگه تونستين بدون اينکه مرورگرتونو ببندين و باز کنين بيشتر از حد مقرر پشت سر هم لاگين فرم رو سابميت کنين حرف شما درست.. اصلا هم نوشتنش کاري نداشت و ۱۵ دقيقه بيشتر وقت نبرد.

    PHP:
    <?php
    session_start
    () or die("session failed");
    define(MAX_TRIES,3);
    $loc "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

    /////////////////////////////////////////
    function showLoginForm()
    {
        global 
    $loc;
        echo(
    "<form method=\"post\" action=\"$loc\" >");
        echo(
    "Username: <input type=\"text\" name=\"username\" /><br />");
        echo(
    "Password: <input type=\"password\" name=\"password\" /><br />");
        echo(
    "<input type=\"submit\" value=\"sign in\" />");
        echo(
    "</form>");
    }
    /////////////////////////////////////////
    function verifyLogin()
    {
        if(
    $_SESSION['logged']===true)
            return 
    true;

        if(
    $_SESSION['tries'] > MAX_TRIES)
            die(
    "hack attempt! go f**k yourself!");

        
    $u $_POST['username'];
        
    $p $_POST['password'];
        if(!empty(
    $u) and !empty($p) )
        {
            global 
    $loc;
            if(
    strstr($_SERVER['HTTP_REFERER'],$loc)===false)
            {
                die(
    "no post vars from external file");
            }
            
    /// some database process to see if this user/pass exists in database
            
    if( /* if user/pass exists... here we assume doesn't exist */)
            {
                
    $_SESSION['logged']=true;
                
    $_SESSION['username']=$u;
                return 
    true;
            }
            else
                {
                echo(
    "this user/pass does NOT exist.<br />");
                echo(
    "u can try again ".(MAX_TRIES-$_SESSION['tries'])." times.");
                
    $_SESSION['tries']++;
                return 
    false;
                }
        }
        return 
    false;
    }
    /////////////////////////////////////////
    function forceActivateSessionCookie()
    {
    if(
    $_GET['done']==or count($_SESSION)>)
        {
        
    $session_name session_name(); 
        if( empty(
    $_COOKIE[$session_name]) )
            {
            die(
    $session_name." must be passed ONLY through cookie.");
            }
        }
    else
        {
        
    $_SESSION['tries']=1;
        global 
    $loc;
        
    header("location: $loc?done=1");
        die;
        }
    }
    /////////////////////////////////////////

    forceActivateSessionCookie();
    if(
    verifyLogin() == false)
    {
        
    showLoginForm();
    }
    else
    {
        
    /// show main content of page for logged user.
        
    echo("Welcome");
    }

    ?>
    عين همين کد اينجا هم upload شده:
    http://www.fexon.com/test/test001.php


    منتظر
    در ۱ ثانیه ۵۰۰۰ تا درخواست بدون کنترل ۳ کلیک
    هستم.(فقط لطفا زياد به سرور فشار نياريد كه سايتم و بقيه سايتهاي روي هوست پرشين تولز داون نشن.)
    در پايان لازم ميدونم جمله ي آخر پست قبليمو با تاکيد بيشتري تکرار کنم.




     
  8. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
    قصه جان، من چاکر همه هم هستم، این دوست عزیزمون هم، من که با شخصیتش مشکلی ندارم. خود شما هم اگر چیزی ندونی و بیای الکی ابراز تخصص کنی و بدتر از اون بیای کسی که تازه داره یه چیزی یاد می گیره رو خورد کنی، من شخصا باهاتون برخورد می کنم :)

    حالا شما جناب امیرسونگ :)
    ۱- متاسفم که هنوز اینقدر قاطعانه صحبت می کنید :)
    ۲- ممنون می شم جزییات انجام سه راهی رو که گفتید عرض کنید :) مخصوصا راه سوم :)
    در ضمن، در توضیح دادن بیشتر دقت کنید، از میان حرف های شما چندین سوتی می شه گیر آورد که نشان از ندانستن اطلاعات شما می باشد.
    ۳- نگران نباشید، یک هکر هیچ وقت نمی یاد دونه دونه رمز ها رو با مرورگرش چک کنه که لازم باشه اون رو باز و بسته بکنه. (امیدوارم این رو تا آخرش بگیری)
    ۴- این برنامه ای که نوشتی (یا از جایی برداشتی) که روی سایتت گذاشتی کار نمی کنه :)
    ۵- راه های تئوری ای هست که نگذاریم طرف به هیچ عنوان بیشتر از مثلا ۳ رمز را در فلان بازه زمانی وارد کند. چه با باز و بسته کردن مرورگر و چه با نوشتن روبات و چه ... نمی گم و منتظر می شم ذهن خلاق دوستان فعال بشه.

    قصه جان، مطمئن باش هدف من از این بحث ها، جز رسیدن به جواب سوال اون (به ظاهر) خانم نیست. البته یه هدف دیگه هم دارم که کمی ادب کردن جناب امیر خان هستش. باشد که همهء ما هدایت شویم.

    موفق باشید، امید
     
  9. amirsung

    amirsung کاربر تازه وارد

    تاریخ عضویت:
    ‏28 نوامبر 2003
    نوشته ها:
    210
    تشکر شده:
    0
    محل سکونت:
    Madrid, Spain
    آقا اميد.. به جاي جنگ رواني راه انداختن درست بحث كن.
    اولا كه اون فرستادن 5000 تا request چي شد؟ اينكه گفتي كد رو از جاي ديگه كپي كردم خيلي توهين بزرگي بود چون من تا حالا نشده كه كدمو از جايي كپي كنم.
    من هم ميدونم كه هكرها نميان دونه دونه رمز ها رو با مرورگرشون چک كن و اگه دقت كني در يك خط از كد جلوي بررسي شدن يوزر/پاس هايي كه از بيرون سايت فرستاده شدن گرفتم. خيلي بده كه قدرت يا حوصله ي تحليل 20 خط كد ساده رو ندارين.
    آقايي كه بزرگترين هنرتون اين طور كه از سايتتون معلومه، نصب كردن ورژن هاي مختلف php هست به جاي بهانه آوردن كه صفحه باز نميشه خيلي راحت به اشتباهتون اعتراف كنيد.

    راه حل سوم هم اينطوريه: آي پي شخصي كه ميخواد لاگين كنه و تعداد تلاشهايي كه تا حالا كرده و زمان تلاش بري ورود توي يك فايل يا ديتابيس ثبت ميشه و وقتي از حد معين گذشت ديگه صفحه براي اون آي پي تا مدت معيني غير قابل دسترس ميشه.
    ps:
    صفحه اي كه در پست قبلي آدرس دادم چك ميكنه كه سشن كوكي ها رو روي مرورگرتون فعال كرده باشين وگرنه اجرا نميشه. شايد به خاطر اون فكر كردين كه مشكلي داره.

     
  10. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
    شرمنده که حس کردی بهت توهین کردم :) خوب کد می زنی‌ :)

    حالا بریم سر اصل مطلب. بهت گفته بودم که
    ولی اصلا رعایت نکردی :)
    خط به خط بررسی می کنم:
    متاسفانه تمام کد شما رو بررسی کردم! و متاسفانه همونطور که در اولین پستم گفتم «شمایی که درک درستی از اینترنت و وب و نحوه ارتباطات اینترنتی نداری» چرا اینقدر قاطعانه در مورد چیزی که نمی دونی صحبت می کنی :) اگر اینقدر اطلاع داری که می دونی هکر ها نمیان دونه دونه رمز عبور وارد کنند، پس باید این رو هم بدونی که جناب http_referer فقط یک Header ساده است و با هر نرم افزاری می شه اون رو شبیه سازی کرد و به سمت سرور فرستاد. خیلی بده که یه نفر اینقدر خودپسند باشه

    ممنون که به سایتم سر زدی، جدی می گم. من هم سایتت رو دیدم، جالب بود، خوشم اومد :)
    ولی یادت نره که عقلت به چشمت نباشه عزیزم :) اونی که شما اونجا دیدی، بزرگترین هنر من نبود. بزرگترین هنر من خیلی کوچکتر از اون چیزی یه که تو فکر کردی. من مطمئنم که خیلی ها می تونند PHP رو روی سرور لینوکسشون نصب کنند ولی یه سوال دارم از شما، سروری در --ایران-- می شناسی که PHP5 نصب کرده باشه؟؟
    به هر حال، فکر کنم بتونی به راحتی سابقه کاری و فعالیت های منو در اینترنت پیدا کنی، فکر کنم برات جالب باشه :) ولی یادت نره که من اینجا خودم رو به رخ تو نکشیدم که بگم فلان چیز بلدم یا نه و فقط قصد دارم اینو بفهمی که حق نداری کسی که داره تازه چیزی یاد می گیره (یا قشر مونث جامعه) رو خورد کنی.

    این رو هم در مورد آخرین جمله ات بگم که من چندین سال PHP کار کردم و ادمین تا حدودی ادمین لینوکس هستم، فکر کنم بفهمم که چه صفحه ای باز می شه و چه صفحه ای.......... فرم شما اومد، اما بعد از ارسال، دوباره فرم اولی رو برای من آورد.

    بچه هایی که دارین این تاپیک رو می خونین، این راه حل رو کمی پرورش بدید تا به نتیجه برسید، این راه حل، راه حل خوبیه :)

    می دونم :)
    فکر کنم یاهو و جیمیل و اورکات و خود همینجا، همه از کوکی استفاده می کنند، پس قاعدتا کوکی های من مشکلی نداره و گرنه نمی تونستم همین پست رو با نام خودم اینجا بنویسم :)

    موفق و پیروز باشید، امید
     
  11. aaber_piade

    aaber_piade Registered User

    تاریخ عضویت:
    ‏19 دسامبر 2002
    نوشته ها:
    1,662
    تشکر شده:
    28
    محل سکونت:
    Tehran
    اقا این بحث خيلي براي من جذابه.. راستي اون هاردي که فروردين سوخته بود و بک آپش مال بهمن بود اون هارده مال کي بود؟ :)

    من بعضي وقت ها به اين موضوع فکر ميکنم قبل از خواب !! :)
     
  12. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
    نترسید، شما هم بفرمایید، من که مشکلی ندارم، پاسخ شما دوست عزیز رو هم می دهم :) فقط امیدوارم جای مناسبی این صحبت ها بشه تا اینجا به گند کشیده نشه :) این صحبت ها هیچ ربطی به این بحث نداره.

    اگر جناب امیرسونگ هم تا فردا جواب این تاپیک رو ندهند، آخرین صحبت هام در این تاپیک رو می گم.

    موفق باشید، امید
     
  13. avajang.com .leftavajang.com.right
  14. amir

    amir مدیران قدیمی

    تاریخ عضویت:
    ‏15 دسامبر 2002
    نوشته ها:
    893
    تشکر شده:
    4
    آقا شرمنده من یه هویی پریدم وسط !
    از دوستان عزیز خواهش می کنم که بحث رو به حاشیه نکشید ، والا قرارا است اینجا از همدیگه چیز یاد بگیریم نه اینکه حال همدیگر رو بگیریم ! هر چه قدر هم آدم کد نویس ماهری باشه و هر چی کد هست خورده باشه بازم یک نکته ای هست که اون بلد نیست و یه کس دیگه ای بلد است و خوب همه باحالی open source همین است که آدم ها نکته هایی رو که بر اثر تجربه کاری پیدا کردند با هم به اشتراک می زارند و شیوه های کدنویسی مون رو اصلاح می کنیم .
    البته کل کل هم چیز خوبی است و باعث پیش رفت است به نوعی ، البته به شرطی که کار به توهین نکشه
    در مورد نکته ای هم که عابر عزیز گفتند ، جای این موضوع توی این تاپیک نیست ! لطفا اینجا ادامه ندین حالا که امید جان هم استقبال کردند که در اون مورد صحبت کنند بهتر است که یه جای دیگه سوالت رو بپرسی عابر جان.
    بعدش آقا من می گیم بشینیم در ادامه این تاپیک همون موضوع لاگ کردن IP رو ادامه بدیم و آخرش هم یه کد جیگر واسه این کار در بیاریم ! ( البته اگه دوستان صلوات بفرستند و ختم کل کل بی مورد رو اعلام کنند ! )
     
  15. amirsung

    amirsung کاربر تازه وارد

    تاریخ عضویت:
    ‏28 نوامبر 2003
    نوشته ها:
    210
    تشکر شده:
    0
    محل سکونت:
    Madrid, Spain
    دوست عزيز.. من از اولش هم با شما مشکلي نداشتم اين شما بودي که الکي به پر و پاي من پيچيدي. اون چيزايي هم که بهتون گفتم واسه اين بود که عصبانيم کردين. با تازه کار ها هم مشکلي ندارم و تا جايي که بتونم کمک هم ميکنم (خودم هم همچين کهنه کار نيستم در زمينه ي php) اما.. تشويق يک دختر به کدنويسي مثل تشويق يک دختر ۹۰ کيلويي به مدل شدن هست. در ضمن اين خانوم تازه کار به نظر نميان.. بلکه من حدس ميزنم کسي هست که با رابطه يک پروژه رو گرفته و حالا که توش مونده و ديده چيزي نيست که با frontpage بشه درستش کرد داره کدشو از توي انجمن ها جمع ميکنه.
    اين هم يادتون باشه که قشر مونث به دفاع احتياجي ندارن و خوب بلدن حقشونو بگيرن حالا چه با سليطه بازي چه با عشوه گري! چقدر خوبه که آدم از همجنس خودش حمايت کنه.. (البته احتمال ميدم که شما اصولا معتقد به مرزبندي هاي جنسيتي نيستي که خوب به نظر من قابل قبول نيست و هر جنسي را بهر کاري ساختند.. جاي بحثش هم اينجا نيست.)

    حرفتون درسته که http_referer چندان قابل اطمينان نيست ولي اون کد در برابر روباتها يک سد ديگه هم داره و اون هم اينه که اکثر روباتها قادر به پذيرش کوکي نيستن.
    خوب.. حالا فرض کنيم يک روبات داريم که اون طور که شما گفتين با هدر referer رو تغيير بده و کوکي هم قبول بکنه.. اين باز هم خللي به وجود نمياره و request هاي اون روبات فقط براي سه بار بررسي ميشن مگر اينکه اين روبات کوکي اي که دريافت ميکنه بعد از فرستادن ۳ بار request پاک کنه!

    تعجب کردم که گفتين راه حل IP خوبه.. چون عوض کردن آي پي بطور متناوب براي يک هکر يا روبات نبايد کار چندان سختي باشه.
    -----------------------

    ياهو هم يک همچين سيستمي داره که بعد از ۳ بار لاگين کردن ناموفق، وارد Secure Mode ميشه.. چک کردم و ديدم که حتي زحمت استفاده از کوکي يا سشن رو هم به خودش نداده و تعداد تلاشها از طريق يک عنصر hidden در فرم لاگين، به صفحه ي بعدي post ميشه و هر بار مقدارش increment ميشه..




     
  16. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    با اجازه

    من هم يك حرف بزنم با توجه به دانسته هاي خودم :happy:
    اين كه يك روبات بتونه مرتب IP خودش رو عوض كنه فكر كنم براي روبات ها خيلي مشكل باشد چون بايد مرتب از اين سرور به اون سرور بره

    اما اگر تصورت اين بوده كه از يك كامپيوتر شروع كنه به عضو كردن IP خودش(IP پكيج ها رو عضو كنه) تا اونجاي كه من مي دونم سند مرگ خودش رو امضا مي كنه چون داره با يك IP جعلي درخواست مي فرسته كه ديگه نتيجش به خودش بر نمي گرده :blink:
     
  17. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
  18. ghese

    ghese کاربر تازه وارد

    تاریخ عضویت:
    ‏11 جولای 2004
    نوشته ها:
    77
    تشکر شده:
    0
    اخيش خوب شد دعوا تموم شد:D
    اميد من مي خواستم همين سوال رو ازت بپرسم
    همين عكس رو مي گم كه ياهو بعد از مثلا 3بار وارد كردن اشتباه پسورد مياره
    چطوري ميشه يك همچين سيستمي طراحي كرد(اگه لازم يك تايپيك ديگه باز كنم؟؟؟)

    يك سوال ديگه هم كه داشتم باز راجب اين موضوع
    اميد شما گفتي اين عكس نشون داده مي شه واسه كه روبات نمي تونه نوشته داخل اونو تشخيص بده
    و فقط يك انسان مي تونه اين كارو بكنه
    خوب ما وقتي مي خوايم يك اكانت در ياهو باز كنيم پايين فرم يك عكس هستش كه بايد حروفش تايپ بشه در فرم
    از طرفي يك سري نرم افزارا هستن كه راحت اكانت مي سازن پس جريان اين عكس چي ميشه؟؟؟
    ممنون
     
  19. knowhow

    knowhow مدیران قدیمی

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    3,477
    تشکر شده:
    19
    قصه جان برای نوشتن همچین برنامه ای باید از Gdlibrary برای ساختن عکس استفاده کنی.
    Gdlibrary این قابلیت رو به شما می ده که یکسری نوشته رو روی عکس بنویسی و یک background هم برای عکس انتخاب می کنید.
    که البته کدهای آماده این کار هست توی Hotscripts یک جستجو کنید پیدا می شه.
     
  20. oxygenws

    oxygenws کاربر تازه وارد

    تاریخ عضویت:
    ‏8 ژانویه 2004
    نوشته ها:
    96
    تشکر شده:
    0
  21. ghese

    ghese کاربر تازه وارد

    تاریخ عضویت:
    ‏11 جولای 2004
    نوشته ها:
    77
    تشکر شده:
    0
    محمد رضا جان ممنون
    اما من تو چند تا از اين سايت ها كه اسكريپت دارن اين كلمه رو كه گفتي سرچ كردم چيزي نيافتيد :D
    اميد من اون تايپيك رو خوندم اما راجب اصل قضيه چيزي نفنميدم اين Gdlibrary چي هست
    (البته حالا مي رم مي گردم ببينم مقاله چيزي هست راجبش يا نه)
    من يك چيزي راجب سوال دومم تو تايپيك مجيدآنلاين فهميدم اونم اينكه اين عكس ها رو روبات مي تونه تشخيص بده
    فقط هر چقدر چپن در قيچي باشه اين احتمال رو كمتر مي كنه

    فكر نكنم بخوام از كد كسي استفاده كنم من فقط از اونجايي كه تازه شروع كردم به ياد گرفتن پي اچ پي
    هر كدي كه گيرم بياد برام جالب باشه سعي مي كنم ياد بگرم

    فقط هنوز يك مشكلي دارم تو پي اچ پي اونم اينه كه يك منبع درست و حسابي اصلا پيدا نكردم :hmm:
    ممنون