PHP實現安全的自動登入____PHP

來源:互聯網
上載者:User

    PHP自動登入的實現思路一般為使用cookie進行狀態驗證。網上和ecshop等系統對於自動登入的實現思路具體為單純設定cookie的uid、username、password

查看 複製 列印 ? //檢查使用者是否登入   function checklogin(){    if(emptyempty($_SESSION['user_info'])){    //檢查一下session是不是為空白    if(emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){  //如果session為空白,並且使用者沒有選擇記錄登入狀    header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);  //轉到登入頁面,記錄請求的url,登入後跳轉過去,使用者體驗好。    }else{   //使用者選擇了記住登入狀態    $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']);   //去取使用者的設定檔    if(emptyempty($user)){    //使用者名稱密碼不對沒到取到資訊,轉到登入頁面    header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);    }else{    $_SESSION['user_info'] = $user;   //使用者名稱和密碼對了,把使用者的設定檔放到session裡面    }    }    }  

    這樣的設定會留下很大的安全隱患,暴露使用者資訊給系統造成安全隱患。

    更為安全的實現思路為:使用對需要放置cookie裡面的資料使用單向的加密以及token和salt進行校正。

    1.cookie名:uid。推薦進行加密,比如MD5('網站名稱')等。
  2.cookie值:登入名稱|有效時間Expires|hash值。hash值可以由"登入名稱+有效時間Expires+使用者密碼(加密後的)的前幾位+salt",salt是保證在伺服器端網站設定檔中的隨機數。
這樣子設計有以下幾個優點:
  1.即使資料庫被盜了,盜用者還是無法登入到系統,因為組成cookie值的salt是保證在伺服器網站設定檔中而非資料庫。
  2.如果賬戶被盜了,使用者修改密碼,可以使盜用者的cookie值無效。
  3.如果伺服器端的資料庫被盜了,通過修改salt值可以使所有使用者的cookie值無效,迫使使用者重新登入系統。
  4.有效時間Expires可以設定為目前時間+過去時間(比如2天),這樣可以保證每次登入的cookie值都不一樣,防止盜用者窺探到自己的cookie值後作為後門,長期登入。

    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.