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

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

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

    ارسال‌ها: 972
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 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 آفلاین
    محمدرضا سلطانی
    ***

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

    ارسال‌ها: 2,782
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #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

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    (آخرین ویرایش در این ارسال: ۱۳۹۱ شهريور ۱۷ ۱۰:۳۸ عصر، توسط Y.P.Y.)
    ۱۳۹۱ شهريور ۱۷ ۱۰:۳۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Reza webnevesht
    Reza آفلاین
    رضا شیخله
    *****

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

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

    ارسال‌ها: 3,025
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #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 آفلاین
    محمدرضا سلطانی
    ***

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

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

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

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

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

    ارسال‌ها: 3,025
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #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