2009-06-12 77 views
3

我有一個PHP頁面,允許人們運行htpasswd來更新他們的密碼。消除他們意見的最佳方式是什麼?我不想限制輸入,因爲我想允許安全密碼。這是我的。如何改進?消毒一個PHP密碼字符串

$newPasswd = preg_replace('/[^a-z0-9~!()_+=[]{}<>.\\\/?:@#$%^&*]/is', '', $inputPasswd); 
$cmdline = $htpasswd . " " . $passwd_file . " " . escapeshellarg($username) . " " .escapeshellarg($newpasswd); 
exec($cmdline, $output, $return_var); 

回答

1

我不會用的preg_replace與「危險人物」空字符串,因爲這將讓用戶相信他改變密碼進入的東西,但你EXEC別的東西。所以用戶將密碼設置爲與他投入的東西不同......最好給用戶提供反饋,告訴他一些字符(最好是捕獲並顯示違規字符)沒有通過驗證。

除此之外,我覺得它看起來不錯。我認爲它爲用戶提供了廣泛的可能性,並且他不需要那些創建安全密碼的用戶。告訴用戶密碼中允許使用哪些字符也是有用的,所以他不必猜測。

+0

這實際上是一個插件的一部分,我已經限制了與用戶交互的能力。真正的用戶輸入不好的角色的可能性很低,我願意處理支持電話。 – JonDrnek 2009-06-12 13:00:31

+0

雖然,我可能會導致密碼更改失敗更早...我會研究該 – JonDrnek 2009-06-12 13:04:40