2011-08-30 62 views
1

我們維護建立在LAMP堆棧上的網站,該網站允許會員登錄其個人資料。儘管我們有一個用於處理大多數任務的管理界面,但有些時候「必須」以「成員身份」登錄並查看他們所看到的內容。如何爲會員登錄網站創建「超級管理」密碼

我們有一個成員的一種非常安全的,徹底的醃製和驗證的登錄過程,但我的想法是下面的語句是不是太安全:

sql = SELECT * FROM userlogins WHERE username = :user 

(run the users entered password through the salt process) 
$userpasswordentered = undisclosed salt process of ($_POST['password']); 

if($userpasswordentered == value retrieved from userlogins above OR $_POST['password'] == 'hardcodedpw') { 

    log user in 
} 

是否有一個真正的「安全」的方式來創建一個「超'密碼,這將允許我登錄到任何用戶帳戶給定一個有效的用戶名?

+2

Harcoded /後門密碼從來不是一個好主意。永遠不會永遠。 –

+2

同意Marc。只需給DB中的每個帳戶一個訪問級別即可。超級用戶帳戶將具有允許此類訪問的訪問級別。只要確保你沒有違反你自己的隱私政策。 – dqhendricks

回答

4

我會實現某種「用戶模擬」功能。因此,基本上,從管理員帳戶中,您可以輸入/搜索用戶ID,然後像用戶登錄一樣調用「登錄用戶」代碼。這會將管理員用戶登錄出去,但他們現在將模擬客戶按要求。

個人雖然,如果我有一個用戶/編輯動作,那麼代碼執行以下操作:

//check for an admin user 
if ($current_user->role == 'admin') 
    //admins have to specify customers to edit 
    if (isset($_GET['id'])) 
     $user_id = $_GET['id']; 
    else 
     //if no customer is specified, return a 404 
     http_404(); 
else 
    //customers can only see their own details 
    $user_id = $current_user->id; 

//get the user details to edit 
$user_to_edit = $repository->get_user($user_id); 

這樣,管理員用戶得到保持登錄狀態,並且你能控制多少的客戶的東西管理員用戶可能會搞砸。

相關問題