2011-01-22 72 views
4

我想要一個頁面,需要密碼登錄,但沒有數據庫。如何在沒有數據庫(PHP)的情況下存儲密碼?

我想有它的頁面硬編碼的,即:

$password = "something" 

或加密,並將其存放在一個文本文件?

任何意見表示讚賞。

+0

另外 - 有人可以告訴我爲什麼在PHP腳本本身硬編碼它是不安全的,因爲沒有人可以查看源代碼? – sqram 2011-01-22 03:23:21

+0

我的回答解決了至少一個可能導致這種情況的情況。 – 2011-01-22 03:24:35

回答

4

您可以使用PHP的md5加密庫來加密密碼,然後將其存儲在文本文件中。由於md5不可逆,所以密碼將是安全的。

你絕對不想以純文本形式存儲。

您還可以將密碼存儲在PHP文件中,但使用加密哈希。該文件的優點是數據與業務邏輯分離,這可以使添加數據庫或使用多個用戶/密碼的能力稍微容易一些。

UPDATE如果您以純文本形式將密碼以未加密的PHP腳本存儲,任何侵入您的服務器或有權訪問服務器的人都可以讀取純文本PHP文件的內容。

4

如果它不在數據庫中,我傾向於將它存儲在服務器webroot之外的文本文件中。如果你將它存儲在php腳本中,並且服務器配置發生了變化,那麼php腳本可能以純文本形式提供,而不是通過php解析,所以密碼將是可見的。誠然,在正常情況下,這不太可能發生,但這是一個可能的風險。加密它可能會有所幫助,但是您還必須將解密密鑰存儲在某個地方,因此解密它只會造成輕微的不便。以散列格式(例如MD5或SHA-1)存儲密碼可能更好,使用相同的方法散列用戶輸入的密碼,然後比較散列。

3

你可以做任何一個。只要確保存儲密碼散列,而不是真正的安全密碼。這裏是一個非常簡單的例子。

<? 
    if(md5($_REQUEST['password']) == 'md5ofyourpasswordHERE'){ 
     //do your logged in page stuff here. 
    } else { 
     //kick them out or tell them to resupply password. 
    } 
?> 

你也可以檢查用戶名,如果這對你很重要。

希望有幫助!

1

如果你想在文本文件中存儲或PHP腳本硬編碼,我會recomended哈希它

  • 第一echo sha1('your password');
  • 結果字符串(不readeable)複製和腳本或文本文件粘貼
  • 比較時使用if (sha1($password) == '543f3fc32c232c32') ...

你也可以使用MD5散列爲

這兩種方法都是一種編寫方式,所以「確保你會記住你的密碼」

相關問題