【问题标题】:MD5 javascript implementation [closed]MD5 javascript实现[关闭]
【发布时间】:2012-02-24 02:05:32
【问题描述】:

我有一个表单,用户可以在其中将密码插入input text field。我想在 md5 中转换该字符串,因此在发布到操作页面时,我将拥有 md5 版本的字符串而不是字符串。是否可以仅在帖子侧而不是在输入文本中更改输入值?

类似这样的:

function go(){
   var pass = document.getElementsByName('pass')[0].value;
   pass = md5(pass);
   form.pass.value=pass; 
}

只是一个伪代码。但通过这种方式,它将更改用户在 md5 版本中插入的文本。我希望该用户不必看到它,但在表单 $_POST['pass'] 的 php 页面中将具有 md5 版本的通行证。我希望你明白。我的英语不是很好;)

解决方案: HTTPS 是最好的解决方案,但为避免创建隐藏的输入字段,请使用 md5 密码填充并清除密码字段;)

var rp = md5(pass.value);
document.rP.value=rp;
pass.value="";

【问题讨论】:

  • 为什么要在任何地方输出密码(即使是 md5)?如果你真的需要它,你应该把它存储在一个会话中。
  • 您的意思是:1. 以“ABC”之类的纯文本形式向表单输入密码,但是 2. 不将其以纯文本形式发送到服务器? (所以,在发回之前 md5() 呢?那么你需要 javascript 甚至更好地使用 HTTPS)
  • 我看不出这有什么好处。在将密码发送到服务器之前对密码进行 MD5 处理不会阻止重放攻击,因为您所要做的就是再次发送相同的 MD5 哈希值。不知道散列是什么数据的散列不是问题。如果您需要安全地发送数据,那么您需要通过 HTTPS 发送数据
  • @JackTurky:使用 JS,您可以从输入字段“提取”密码(如果设置为 type="password",则无论如何都会加点)。然后,您决定是发送 还是添加隐藏字段,例如 ... 无论如何,我打赌你最好使用会话,没有密码,以及存储在会话和表单(隐藏)中的哈希值随心所欲。
  • @JackTurky 正如我所说,没关系,如果表单不是通过 HTTPS 提交的,那么它很容易受到重放攻击。您不必知道哈希最初是什么就可以再次发送相同的哈希。另外(这只是我想到的),您将使任何禁用 javascript 的人完全无法访问您的网站。

标签: php javascript forms input md5


【解决方案1】:

你试图以错误的方式解决这个问题。

最好的解决方案是使用 HTTPS。这意味着您不必担心会混淆输入的密码。

在我的解决方案中,我通过 HTTPS 接受纯文本密码,然后进一步检查他们的密码是否不是我在本地存储的 12,000 个左右“简单”密码之一。

【讨论】:

  • 我知道 https.. 我研究过它.. 但我不能使用它,因为我没有使用专用服务器..
  • 您不需要专用服务器来使用它。虚拟主机就足够了,尽管您可能需要与托管公司合作。
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 2011-11-28
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多