/
  • نظرخواهی در خصوص امنیت کد Login

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی نظرخواهی در خصوص امنیت کد Login
    نویسنده پیام
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 979
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #1
    نظرخواهی در خصوص امنیت کد Login
    سلام...به نظرتون این کد امنیت حداقلی برای لاگین کردن رو داره؟
    کد PHP:
    //اینجا کد چک کردن کپچاست
    function check_captcha($x,$y)
    {
    $enc $x.date('ymd');      
        if (isset(
    $_SERVER['HTTP_USER_AGENT']))
            
    $enc .= $_SERVER['HTTP_USER_AGENT'];
        if (isset(
    $_SERVER['REMOTE_ADDR'])) 
            
    $enc .= $_SERVER['REMOTE_ADDR'];  
     
    $xfinalmd5(base64_encode($enc));
        return (
    $xfinal===$y)?TRUE:FALSE;
    }
    if(
    check_captcha($_POST['captcha'],$_SESSION['captcha'])){
    //اگر کپچا درست بود میره واسه چک کردن یوزر نیم و پسورد
    if(isset($_POST['login'])){
        require(
    'include/db_connect.php'); 
        if(!empty(
    $_POST['username']) && !empty($_POST['pass'])){
        
    $username=mysql_real_escape_string(strip_tags($_POST['username']));
        
    $pass=mysql_real_escape_string(strip_tags(md5($_POST['pass'])));
        
    $selectSQL="SELECT * FROM tblusers WHERE (`username`='$username') limit 1";   
            
    $result=mysql_query($selectSQL);
            if(
    mysql_num_rows($result)==1){
                
    $row=mysql_fetch_array($result);
                if(
    $pass!=$row['password']){
                    
    header("location: signin.php?msg=1");
                    exit;         
                }elseif(
    $pass==$row['password'] and $row['active']==1){
                    
    $_SESSION['username']=$username;    
                    
    $_SESSION['name']=$row['name'];    
                    
    $_SESSION['user_id']=$row['id'];
                    
    header("Location: members/index.php");     
                    exit();
                }elseif(
    $pass==$row['password'] and $row['active']==0){
                    
    //در صورتی که رمز درست باشه اما این پروفایل توسط مدیر تایید نشده باشه باز هم اجازه ی لاگین نمیده
                    
    header("location: signin.php?msg=2");
                    exit;
                }                                
            }else{
                    
    header("location: signin.php?msg=1");
                    exit;           
            }
        }
    }
    }else{
                
    header("location: signin.php?msg=3");
                exit;

    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۷ ۰۵:۵۴ عصر، توسط webnevesht.)
    ۱۳۹۱ شهريور ۱۷ ۰۵:۴۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 979
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #2
    RE: نظرخواهی در خصوص امنیت کد Login
    29بازدید شده از این پست ! کسی نظری نداره که خوبه این روش یا نه؟Huh
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    ۱۳۹۱ شهريور ۱۷ ۰۹:۳۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,747
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 96
    تشکرها : 2160
    ( 4779 تشکر در 2174 ارسال )
    ارسال: #3
    RE: نظرخواهی در خصوص امنیت کد Login
    اولین قدم اینه که خوانا، مرتب و یکدست بنویسی تا بشه خوندش (یا حداقل دل به خوندنش داد)
    دومین قدم، مقایسه با دیگر کد های مشابه هستش - نه اینکه سریع هر چی به ذهنمون برسه اجراش کنیم و بیاریمش رو کار
    سومین قدم، توضیح مختصر راجب سر و ته کد ها هستش

    مثلاً این نشست captcha حاوی چیا هستش که با اون md5(base64_encode شدش مقایسه میشه؟
    اون signin.php?msg=1 که مستقیماً از address bar هم در درسترسه!
    اون db_connect.php، اگر شرط POST login درست باشه و شروط user pass غلط باشه الکی include میشه؟ و اگر شرط login POST درست نباشه در ادامه ازش استفاده نمیشه؟
    برای توابع header و exit یک تابع سازماندهی شده بنویس و اون صدا بزن
    الگوریتم امنیتی pass رو هم تقویت کن و به یه md5 دره پیت اکتفا نکن
    اون strip_tags و mysql_real_escape_string رو هم برای pass نذار و حذف کن --- اولاً نیازی نیست چون md5 میشه، دوماً بعضی ها از اونا در رمزشاون استفاده می کنن
    و...

    کد منو ببین:
    کد PHP:
    <?php

    function Redirect($Location$Replace 1$HRC NULL)
    {
        if(!
    headers_sent())
        {
            
    header('location: ' urldecode($Location), $Replace$HRC);
            exit;
        }

        exit(
    '<meta http-equiv="refresh" content="0; url=' urldecode($Location) . '"/>'); # | exit('<script>document.location.href=' . urldecode($Location) . ';</script>');
        
    return;
    }

    function 
    check_captcha($x$y)
    {
        
    $enc $x.date('ymd');

        if (isset(
    $_SERVER['HTTP_USER_AGENT']))
            
    $enc .= $_SERVER['HTTP_USER_AGENT'];

        if (isset(
    $_SERVER['REMOTE_ADDR'])) 
            
    $enc .= $_SERVER['REMOTE_ADDR'];

        return (
    md5(base64_encode($enc)) === $y) ? TRUE FALSE;
    }

    if(
    check_captcha($_POST['captcha'], $_SESSION['captcha']))
    {
        if(isset(
    $_POST['login']))
        {
            require 
    'include/db_connect.php';
            if(!empty(
    $_POST['username']) && !empty($_POST['pass']))
            {
                
    $username mysql_real_escape_string(strip_tags($_POST['username']));
                
    $pass md5($_POST['pass']);
                
    $selectSQL "SELECT * FROM `tblusers` WHERE (`username` = '{$username}') limit 1;";
                
    $result mysql_query($selectSQL);
                if(
    mysql_num_rows($result) == 1)
                {
                    
    $row mysql_fetch_array($result);
                    if((
    $pass == $row['password']) and ($row['active'] == 1))
                    {
                        
    $_SESSION['username'] = $username;
                        
    $_SESSION['name'] = $row['name'];
                        
    $_SESSION['user_id'] = $row['id'];
                        
    Redirect('members/index.php');
                    }
                    elseif((
    $pass == $row['password']) and ($row['active'] == 0))
                    {
                        
    Redirect('signin.php?msg=2');
                    }
                }
                
    Redirect('signin.php?msg=1');
            }
        }
    }
    else
    {
        
    Redirect('signin.php?msg=3');

    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    کسی که دین را با شخصیت ها بشناسد، همان شخصیت ها او را از دین خارج می سازند. امام صادق (ع)

    یادمون نره اون جلبک هایی که موقع اشغال افغانستان میگفتن حالا که آمریکا اومده چند سال دیگه افغانستان بهشت منطقه میشه...
    سلام بهشت منطقه!
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۷ ۱۰:۳۸ عصر، توسط Y.P.Y.)
    ۱۳۹۱ شهريور ۱۷ ۱۰:۳۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Reza webnevesht
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #4
    RE: نظرخواهی در خصوص امنیت کد Login
    نقل قول: بازدید شده از این پست ! کسی نظری نداره که خوبه این روش یا نه؟
    شدیداً داره داد میزنه
    I need MVC
    Angel
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ شهريور ۱۷ ۱۱:۲۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : webnevesht
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 979
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #5
    RE: نظرخواهی در خصوص امنیت کد Login
    رضا جان خب من MVC‌ بلد نیستم....خیلی هم دوست دارم یاد بگیرم...اما فرصتی نشده برای این کار هنوزBlushUndecided
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    ۱۳۹۱ شهريور ۱۷ ۱۱:۵۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #6
    RE: نظرخواهی در خصوص امنیت کد Login
    MVC در 5 دقیقه :
    سه تا پوشه بساز با یه فایل .
    models
    view
    controllers
    index.php

    توی index.php اینو بنویس .

    کد PHP:
    if( ! empty($_GET['mod']))
        
    $controller $_GET['mod'];
    else
        
    $controller 'home';
        
    if( ! empty(
    $_GET['action']))
        
    $action $_GET['action'];
    else
        
    $action 'index';
        
    require_once 
    dirname(__FILE__)."/controllers/{$controller}.php";

    $app = new $controller;
    $app->$action(); 

    حالا برو توی controllers این دو تا رو بنویس
    post.php
    page.php
    حالا post.php رو باز کن
    کد PHP:
    class post{
        
        function 
    index()
        {
            echo 
    'Hi i am index';
        }
        
        function 
    comment()
        {
            if( ! empty(
    $_GET['id']))
                echo 
    "comment fot {$_GET['id']}";
            else
                echo 
    'No id set';
        }

    حالا آدرسهای زیر را بنگر
    کد:
    site.ir/?mod=post
    site.ir/?mod=post&action=comment&id=1
    حالا دیگه فقط کافیه متد اضافه کنی به کنترلرت و خلاص
    واسه مدل هم باید یه توی پوشه مدل بنویسی و هرجا خواستی توی کنترلر اینکلودش کنی و خلاص .
    ویو هم همینطور .

    پ ن :
    این چیزایی که گفتم 1/50 استاندارد برنامه نویسی MVC هست ، که فقط واسه اینکه درگیر بشی همین الان نوشتم .
    یه چرخی بزنی خیلی مقالات خوبی هست ، احسان هم یکی نوشته بگرد توی انجمن هست .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ شهريور ۱۸ ۱۲:۱۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : vejmad pary_daryayi
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 979
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #7
    RE: نظرخواهی در خصوص امنیت کد Login
    بابا آموزش نوین MVCBig Grinممنون ...با همین استارت میزنم و بعدش که فهمیدم چه خبره شروع میکنم با اون کار میکنمBlush

    خداییش خیلی این فروم تاثیر مثبت داشته برام توی یادگرفتن بهتر php....
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۸ ۱۲:۴۹ صبح، توسط webnevesht.)
    ۱۳۹۱ شهريور ۱۸ ۱۲:۴۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #8
    RE: نظرخواهی در خصوص امنیت کد Login
    نقل قول: خداییش خیلی این فروم تاثیر مثبت داشته برام توی یادگرفتن بهتر php....
    کار از خیلی گذشته واسه من .
    هر چی یاد گرفتم از همینجاست واقعاً .

    نقل قول: با همین استارت میزنم و بعدش که فهمیدم چه خبره شروع میکنم با اون کار میکنم
    قبل از اینکه کنترلر رو اینکلود کنی ، چک کن فایلش موجود باشه .
    بعد یه autoload هم بنویس که مجبور نشی هی include کنی .
    بابا برو آموزش احسان رو بخون دیگه .Dodgy
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۸ ۱۲:۵۴ صبح، توسط Reza.)
    ۱۳۹۱ شهريور ۱۸ ۱۲:۵۳ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : webnevesht
    pary_daryayi آفلاین
    Mermaid
    ****

    ارسال‌ها: 615
    تاریخ عضویت: ۱۳۹۱ خرداد ۲۸
    اعتبار: 19
    تشکرها : 724
    ( 204 تشکر در 116 ارسال )
    ارسال: #9
    RE: نظرخواهی در خصوص امنیت کد Login
    (۱۳۹۱ شهريور ۱۸ ۱۲:۵۳ صبح)Reza نوشته شده توسط:  قبل از اینکه کنترلر رو اینکلود کنی ، چک کن فایلش موجود باشه .
    بعد یه autoload هم بنویس که مجبور نشی هی include کنی .
    اقا رضا امکانش هست autoload رو هم در 30 ثانیه بگید ؟Smile
    سرچ کردم متوجه نشدم ..
    __________________________________________________________________________
    آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۸ ۱۱:۵۸ صبح، توسط pary_daryayi.)
    ۱۳۹۱ شهريور ۱۸ ۱۱:۵۴ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,038
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2712
    ( 2703 تشکر در 1685 ارسال )
    ارسال: #10
    RE: نظرخواهی در خصوص امنیت کد Login
    اینارو بخونی متوجه میشی .
    http://php.net/manual/en/language.oop5.autoload.php
    http://www.codeforest.net/autoload-your-classes-in-php
    http://www.php.net/manual/en/function.sp...gister.php
    http://www.php.net/manual/en/function.spl-autoload.php

    یه مثال خیلی ساده هم میزنیم واسه دستگرمی استفاده کنید .

    کد PHP:
    class loader{
        
        private function 
    _autoload($file NULL)
        {
            if( ! 
    $file)
                return 
    NULL;
            
            require_once 
    $file.'.php';
        }
        
        public function 
    model($mod)
        {
            
    $this->_autoload("models/$mod");
            
    $out = new $mod;
            return 
    $out;
        }
        
        public function 
    view($view)
        {
            
    $this->_autoload("view/$view");
        }

    }


    #
    #    Example
    #

    $app->load = new loader;

    //for model
    $main_model $app->load->model('main_model');
    $main_model->someAction() ; ...

    //for view
    $app->load->view('home'); 

    البته این چیزی که من نوشتم یه مثاله و صرفاً استاندارد نیست ، فقط واسه اینکه درگیر بشید .
    چند دقیقه شد؟Tongue

    اینم کتاب احسان .
    بخونیدش


    فایل‌(های) پیوست شده
    .pdf  MVC_ehsan.pdf (اندازه: 256.55 KB / تعداد دفعات دریافت: 61)
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۸ ۰۱:۵۶ عصر، توسط Reza.)
    ۱۳۹۱ شهريور ۱۸ ۰۱:۵۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : pary_daryayi
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS