0

我是 PHP 初学者,我正在做一个需要登录/注销页面的网站。为了更清楚起见,我决定将与铭文相关的所有内容放在一个名为 addUser 的函数上。我的问题如下:该函数接受用户名和邮件地址参数,生成一个随机密码,并将数组 $user 存储在一个文件中,该数组具有用户名、邮件地址和密码的 SHA1 哈希值。如果所有过程都正常,则该函数返回 true,如果没有用户名或邮件地址,或者存在类似的用户名,则返回 false。

我的问题是:调用此函数时如何安全地显示生成的密码?

谢谢,如果我的问题微不足道,我很抱歉,但我还没有找到任何解决方案。

添加用户功能:

function addUser($pseudo, $mail)
{
$pseudo = preg_replace('/\s+/', '', $pseudo);
$required = array($pesudo, $mail); 
foreach ($required as $field){
    if (empty($_POST[$field])){
        return(false);
    }
}
else{
// put the existing username test.
$password = random_password();
echo $password;
$hash = sha1($password);
$user = array(
    "pseudo" => $pseudo,
    "mail" => $email,
    "hash" => $hash,
);
$user = serialize($user);
file_put_contents('db', $user."\n", FILE_APPEND);
return(true);
unset($password);
}
4

2 回答 2

0

如果生成并显示密码,那么它永远不会真正安全。您可能需要考虑通过电子邮件向他们发送唯一的密钥 ID,而不是为某人分配密码,然后设置他们的密码。

或者减少所有功能,直到在登录时提交自定义密码。

当然还有“为什么不首先允许用户设置自己的密码?”

于 2013-09-02T18:29:50.823 回答
0

请遵守建议不要这样做!至少,散列用户的密码并存储该散列。

但是,至于您想要做什么,您可以在失败时返回 FALSE,在成功时返回散列(也就是说,不要返回 TRUE)。调用此函数时,检查 FALSE 并假设 not-FALSE 表示“真”-ish。

于 2013-09-02T19:31:27.797 回答