2012-08-05 25 views
2

嗨我試圖設置.htaccess.htpasswd文件,以查看用戶是否可以訪問特定的目錄。當新用戶註冊時,他們的密碼用PHP md5()函數加密,然後用他們的其他登錄信息存儲在數據庫中。我想將他們的一些加密密碼動態添加到我的.htpasswd文件中,以便它們可以進入子成員部分。我遇到了麻煩,因爲.htpasswd文件可以與使用crypt()函數加密的密碼一起使用,但我不確定如何使其使用md5加密密碼。如何在.htpasswd文件中使用md5密碼?

+0

而不是寫入'.htpasswd',你有沒有考慮過使用['mod_authn_dbd'](http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html)?您可以使用任何[支持的密碼格式](http://httpd.apache.org/docs/2.2/misc/password_encryptions.html)。 – eggyal 2012-08-05 09:07:02

回答

5

Documentation說:

htpasswd的使用一個版本的MD5的修改 阿帕奇,否則系統函數crypt()對密碼進行加密。由htpasswd管理的文件可能包含這兩種類型的密碼: ;某些用戶記錄可能包含 MD5加密密碼,而同一文件中的其他人可能有 用crypt()加密的密碼。

我想你可以明確指定Apache來使用使用-m論點htpasswd文檔密碼md5s到htpasswd

如果你不想或者不能使用htpasswd的工具,可以創建隱窩()從PHP基於密碼:

$clearTextPassword = 'some password'; 
$password = crypt($clearTextPassword, base64_encode($clearTextPassword)); 
3

「我認爲,你可以明確地指定使用的Apache -m參數HTPASSWD在htpasswd的文件中使用md5s密碼」

我剛剛在Ubuntu 12.04和更新的版本中發現了相反的情況,它默認使用md5,並且必須使用-d標誌才能使用Crypt。這可能是其他地方的情況,我似乎無法找到htpasswd的版本號。