2014-04-17 70 views
0

我有一个表单必须跨两页传递数据。隐藏表单元素密码安全

在第1页上,用户填写了一些细节。第2页给他们提供确认屏幕,他们可以同意或返回并编辑他们的详细信息。

在页2上,来自页面1的值存储在隐藏的表单字段中。

E.g.

<input type="hidden" name="user_email" value="[email protected]" /> 

当用户在第2页上点击提交时,一些PHP代码会运行并将它们添加到网站中。

在第1页上,用户输入密码,我的问题是我如何在第2页上处理这个问题。我不认为在隐藏表单域中输出它是个好主意。运行的PHP无论如何都会散列这个密码,因此我正在考虑在页面1和页面2之间对它进行哈希处理,以便隐藏窗体字段的值是哈希版本而不是纯文本。有没有更好的办法可以做到这一点?

+0

只要您使用POST数据,而不是将任何内容附加到第2页上的URL,只需将明文密码置于隐藏字段即可。我强烈建议不要将哈希密码放入隐藏字段,因为您只是想要得到反向工程。 – MonkeyZeus

+0

为什么你认为在隐藏表单域输出密码不是一个好主意?举个例子,只有用户可以阅读它的值 – hindmost

+2

@后面的浏览器插件可以读取它。或者复制粘贴到富文本格式,如电子邮件。对我来说这似乎不是一个好主意。 –

回答

3

使用会话变量来存储这些信息,决不会将它作为隐藏的表单域传递回页面。 $_SESSION

+0

我喜欢这种方法。我已经将会话变量设置为散列PW。散列PW的函数是众所周知的开源应用程序的一部分,所以我并不担心它被反向设计。在尝试使用它之前清理价值的最佳功能是什么? –

0

将插入到第1页的数据输入到具有唯一散列(不要仅使用唯一ID)的数据库表(称为pending_user_register或其他)中,然后在隐藏文本字段中引用唯一散列?

或者走简单的路线并使用$ _SESSION。

或者,使用上面的方法,而不是隐藏的字段把它放在$ _SESSION中。

0

您可以使用password_hash(),并且可以在sessioncookie

存储密码可以在user data存储在数据库中添加sessionuser_id使用id供以后updation of fields