簡體   English   中英

如何保護 PHP 中的用戶登錄

[英]How do I secure user login in PHP

所以我的數據庫帶有標准用戶名和散列密碼( password_hash )。

我的網站上有一個登錄表單,用戶在其中輸入他們的詳細信息,然后基於此創建 session。

<?php
    session_start();

    //if the username and password is valid 
    if(validLogin){
        $_SESSION['account'] = $username;
    }

    //$_SESSION['account'] is used from now on for backend user activities

?>

如果憑據正確,則會創建指向用戶名的account session變量。

我已將Session 的長度增加到 1 個月(因為用戶抱怨他們之前一直被注銷)

我能做些什么來增加這里的安全性?

如果我將 go 放入開發工具,則只有一個名為PHPSESSID的 cookie,它包含 26 個字符的值。

但是,任何人都可以將該值復制並粘貼到他們自己的瀏覽器中並劫持某人的帳戶——如果他們有該值的話。

我不知道該怎么做,很迷茫。

我怎樣才能提高這里的安全性? 除了每 24 分鍾注銷一次用戶

首先,session(最初)的概念暗示:

session 在您打開應用程序時開始,只要您處理它就會持續,並在您關閉應用程序時結束。

由於應用程序的性質發生了變化,並且出於方便的原因,這種基本模式已經被擴展,會話保持活動的時間更長,即使用戶沒有積極地使用它。 但是,如果安全是您的主要關注點,請使用更嚴格的方法,即更短的到期時間和強制注銷。

其次,發明了 PHP 會話來解決困擾常規瀏覽器 cookies 的許多問題(以文本形式存儲在客戶端,限制為 4KB,相當可訪問,與每個請求一起發送,因此使 Z293C9EA246FF99885DC6ZF6 請求膨脹) PHP session 只向瀏覽器發送一個散列 ID,並將所有數據存儲在服務器上。 如果攻擊者擁有客戶端安全確實受到損害。 但是,如果您無法控制客戶端設備的安全性,這可能無法控制。 安全性是一個多層概念,意味着不同程度的信任。

此答案提供了有關 PHP session 安全性的更多上下文,並提供了一些有用的安全性建議。 However, I have one additional recommendation: If you do not need to work with the PHP session id in your client code (ie JavaScript) disable session.cookie-httponly in your php.ini (or alike).
如果這一切還不夠“好”,您將需要實施更安全的協議,使用多因素身份驗證等。 一般來說,session id 可能是您最不關心的; 擁有正確配置的 web 服務器並遵循最佳實踐更為重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM