防止服务器端脚本转储密码

时间:2014-11-15 12:45:17

标签: php security

我想知道如何处理网络表单。 假设我有一个处理表单提交的服务器端脚本

   echo "Your name: {$_POST['Name']}<br />";
   echo "Your password: {$_POST['Password']}<br />";

我不希望服务器端程序员(比如上面的php脚本)使用一些聪明的技巧来知道或将用户密码转储到文件中。

人们如何在表单处理中处理此问题? 我上面有一个php示例,但这可能是任何服务器端语言。

1 个答案:

答案 0 :(得分:0)

更新:我写了一篇关于此事的小博文:Preventing users from sending their passwords to others.


我开发了一个客户端的消息服务器,我不得不阻止那些能够互相发送密码的用户。

(在此示例中,我使用MD5,但我建议使用BCrypt

我做的很简单:

<强> 1。保存原始密码和哈希的长度。

密码:foobar

+--+-----------------+----------------------------------+
|ID| password_length | password                         |
+--+-----------------+----------------------------------+
|01| 6               | 3858f62230ac3c915f300c664312c63f |
+--+-----------------+----------------------------------+

<强> 2。保存新邮件时,我们必须检查每个单词。

function saveNewMessage( Messenger\Message $message )
{
    // filter passwords
    $filteredMessage = '';
    foreach( explode( ' ', $message->text ) as $word ) 
    {
        if ( strlen( $word ) === $message->user->password_length )
        {
            $word = ( md5( $word ) === $message->user->password ) ? '*****' : $word;
        }

        $filteredMessage .= $word;
    }

    $message->text = $filteredMessage;
    $message->save();
}

这是一种非常简单易用的方法,有助于防止网络钓鱼。但是当然如果有人真的想要打印出他的密码,他就可以写出f.o.o.b.a.a.r&#34;没有圆点&#34;。

如果您想在整个应用程序中阻止这种情况,只需对每个用户输入执行此操作。

我希望我的回答有所帮助,并且没有错过这一点。