Php md5返回空字符串

Php md5返回空字符串,php,md5,Php,Md5,首先,我在谷歌上搜索,没有找到任何帮助我的问题 我正在使用MAMP在本地服务器上工作,并遵循一个教程尝试使用md5保护php页面 在my login.php页面中,有一个带有登录/密码字段的表单,在提交时调用JS函数: <form id='log' method='post' action='templates/auth.php' onsubmit='javascript:submit_pass();'> <input type='hidden' name='md5' /&g

首先,我在谷歌上搜索,没有找到任何帮助我的问题

我正在使用MAMP在本地服务器上工作,并遵循一个教程尝试使用md5保护php页面

在my login.php页面中,有一个带有登录/密码字段的表单,在提交时调用JS函数:

<form id='log' method='post' action='templates/auth.php' onsubmit='javascript:submit_pass();'> 
<input type='hidden' name='md5' /> 
<table align='center'> 
<tr><td>Login</td><td><input name='login' /></td></tr> 
<tr><td>Mot de passe</td><td><input type='password' name='passwd' /></td></tr> 
<tr><td colspan='2' align='center'><input type='submit' value='Login !' /></td></tr> 
</table> 
</form>
然后通过POST将参数发送到auth.php

因此,我在字段中键入一个随机登录名和密码

在我的auth.php页面上,我回显了$\u POST['login']和$\u POST['md5']

问题是$\u POST['md5']是空的。所以我试着回显它的大小,它显示为0

我不知道,是不是少了什么?错了吗


谢谢

不要在客户端上散列密码。它不会提高安全性,因为没有任何变化:服务器现在只能看到MD5散列和用户名,如果我可以拦截,我就有了登录所需的一切!因为服务器只能检查MD5

此外,Javascript没有内置的MD5函数

最重要的是:一个未加盐的MD5散列和纯文本密码本身一样不安全——扫描整个密码空间只需要稍微多一些努力


如果您真的想提高密码安全性,您必须使用SSL进行客户机-服务器通信(否则任何内容都将以明文形式发送),并且在服务器上,您应该使用新的闪亮的PHP5.5函数进行哈希运算(有一个函数允许您从PHP5.3.7开始进行哈希运算)。

对于密码,您应该使用crypt()

buf=MD5(通过)
——MD5的
功能在哪里?在通过网络传输密码之前,不要费心对密码进行哈希运算;你不会因此得到任何安全感。如果我可以捕获密码散列,我还可以捕获会话cookie或使用rainbow表来查找密码。请改用HTTPS。请不要使用MD5对密码进行散列。另外,当密码到达后端时,请确保使用真正的密码散列算法(如PHP的
password\u hash()
函数提供的算法),而不是MD5。
function submit_pass()
{
  pass=document.forms['log'].passwd.value;
  document.forms['log'].passwd.value="";
  buf=MD5(pass);
  document.forms['log'].md5.value=buf;

  return true;
}