我想知道如何处理网络表单。 假设我有一个处理表单提交的服务器端脚本
echo "Your name: {$_POST['Name']}<br />";
echo "Your password: {$_POST['Password']}<br />";
我不希望服务器端程序员(比如上面的php脚本)使用一些聪明的技巧来知道或将用户密码转储到文件中。
人们如何在表单处理中处理此问题? 我上面有一个php示例,但这可能是任何服务器端语言。
答案 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;。
如果您想在整个应用程序中阻止这种情况,只需对每个用户输入执行此操作。
我希望我的回答有所帮助,并且没有错过这一点。