2009-06-12 75 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