Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在发送到php页面之前,我可以将密码转换为javascript中的md5吗?_Javascript_Md5 - Fatal编程技术网

在发送到php页面之前,我可以将密码转换为javascript中的md5吗?

在发送到php页面之前,我可以将密码转换为javascript中的md5吗?,javascript,md5,Javascript,Md5,在使用javascript将输入表单的密码发送到我的php验证页面之前,我是否可以使用javascript将其转换为md5哈希 如果是,如何进行 还是有更简单的方法 谢谢。您可以这样做,但这不会提高应用程序的安全性 下面是PHPmd5函数的JS实现无论如何,您都不应该这样做 JavaScript可以很容易地被禁用,您将保存/操作普通密码。使用PHP进行转换。您需要仅使用PHP将纯文本密码转换为md5哈希值。正如Sarfraz指出的,用户可以轻松地在浏览器中禁用JavaScript,从而使md5进

在使用javascript将输入表单的密码发送到我的php验证页面之前,我是否可以使用javascript将其转换为md5哈希

如果是,如何进行

还是有更简单的方法


谢谢。

您可以这样做,但这不会提高应用程序的安全性

下面是PHP
md5
函数的JS实现

无论如何,您都不应该这样做


JavaScript可以很容易地被禁用,您将保存/操作普通密码。使用PHP进行转换。

您需要仅使用PHP将纯文本密码转换为md5哈希值。正如Sarfraz指出的,用户可以轻松地在浏览器中禁用JavaScript,从而使md5进程变得无用。如果他们禁用JS,纯文本密码可能会在不加密的情况下发送到数据库


如果您担心数据传输安全,请购买SSL证书以确保表单中的所有内容都是通过HTTPS发送的

您不发送任何普通密码的意图绝对值得称赞。但是,简单地在客户端对密码进行散列并发送散列而不是普通密码将不会有多大帮助。因为虽然用于身份验证的不是普通密码,但现在使用的是哈希。因此,窃听通信的攻击者只需使用哈希而不是普通密码。所以这不会有多大帮助,更不用说客户机不支持JavaScript了


然而,值得一提的是,有些身份验证方案就是这样工作的(例如)。但是仍然需要有一个安全可信的通道,在这个通道中,密码最初被发送到服务器。所以HTTPS仍然是必须的。

关于密码处理,有一些简单的规则:

  • 要将密码从浏览器安全地传输到服务器,请使用SSL如果你真的担心安全问题,不要满足于任何更少的事情

  • 仅在服务器上执行密码哈希。客户端的散列依赖于JavaScript,而JavaScript并不总是存在

  • 这似乎很明显,但您只能使用密码哈希函数对密码进行可靠的哈希,例如(从5.5开始随PHP提供)或通过库


  • 是的,这是可能的。但你对这样做有什么期待呢?唯一的优点是只传输散列而不是普通密码,但现在散列是新密码。我不想在我的数据库(稍后)中保存纯文本密码。因此,我只需要md5散列,每当用户尝试登录时,我都希望将他们输入的md5(密码)与数据库中的md5散列进行比较。在服务器端对密码进行散列有什么问题,而服务器端实际上由您控制?对不起,我是一个新手。你的建议比我想做的更有意义。但我不确定如何将输入表单的密码转换为md5,然后将其传递到JS(在同一页)。@PartisanEntity:如果我将客户端的哈希值与服务器的哈希值进行比较……这比将密码存储在纯文本中更好吗?如果我破门而入,我拥有所有的密码--我可以调整我的浏览器,向你发送我刚从你的数据库偷来的哈希,而不是试图找出创建它的密码。什么数据库?没有提到任何数据库。@Gumbo:我想是在这里吧。关键是,当PHP可用时,JS不应该用于加密密码。无论如何为你更新谢谢你我没有想到JS可以被禁用的事实。但是,在发送到我的php验证页面之前,如何使用php将密码转换为md5并将其传递到同一页面上的js?@Sarfraz实际上,PartisanEntity确认哈希应该存储在数据库中。:)@PartisanEntity:请参阅PHP手册以了解更多信息:。或者问另一个问题,如何在php中使用md5来保存密码它不仅没有增加安全性,反而降低了安全性。这几乎和明文密码一样糟糕,因为散列密码现在就是密码。如果我知道散列,这只会让事情变得稍微困难一些,而不是在服务器上检查散列——在这种情况下,我需要找出是什么密码生成了散列。(我甚至没有提到这样一个事实,如果你对客户端进行散列,散列几乎必须是不加盐的……突然间,如果出于某种原因我需要原始密码,那么获得原始密码就变得更容易了。)任何密码都不应该用md5进行散列。