在PHP中屏蔽表单密码

时间:2015-10-25 13:45:58

标签: encryption passwords wamp plaintext

经过数小时的谷歌搜索,关注视频以及在我的本地wamp服务器上安装SSL失败的尝试后,我处于放弃的尖端。

所以我来这里寻求帮助

我有一个简单的表单,记录用户并将详细信息与php数据库进行比较,密码存储在数据库的MD5哈希中。

我知道md5是不安全的,而https是保护传输等的麻烦方式,但我在这里需要的只是在传输过程中简单地屏蔽密码,以便在wirehark捕获期间无法以纯文本形式查看。

表单代码为:

<form method="post" action="index.php" name="loginform" id="loginform">
<fieldset>
    <label for="username">Username:</label><input type="text" name="username" id="username" /><br />
    <label for="password">Password:</label><input type="password" name="password" id="password" /><br />
    <input type="submit" name="login" id="login" value="Login" />
</fieldset>
</form>

有没有办法将密码设置为:

<label for="password">Password:</label><input type=md5("password")

同样,我需要的东西快速而简单。

提前致谢

韦恩

2 个答案:

答案 0 :(得分:0)

解决方案是使用像https://github.com/blueimp/JavaScript-MD5这样的javascript MD5库,并在表单提交时调用md5()函数。 单独使用html代码就无法做到这一点。

如您所知,通常密码的md5哈希是在服务器端通过代码中的index.php页面完成的。 https传输保护密码不被窃听。如果wireshark能够解密它,那是因为wireshark以中间人的身份拦截通信,并为所使用的URL生成其他https证书。浏览器应警告用户通信不安全,因为证书不是来自浏览器信任的证书颁发机构。如果尽管如此,用户继续,他应该知道他的页面上的所有内容都可以修改,包括进行散列的代码。

答案 1 :(得分:0)

https是登录密码加密和会话保护的首选解决方案。

如果无法使用https,防止密码被滥用的替代方法可能是不对称加密:使用服务器提供的公钥加密浏览器中的密码,并使用相应的私钥在服务器上对其进行解密。用于加密的JavaScript库是https://github.com/travist/jsencrypt。如果没有私钥,使用wireshark的攻击者将无法解密密码。

密码必须与服务器中的'salt'(nonce(例如序列号))一起加密,以防止攻击者重复使用密码。

警告:如果您打算使用会话密码,请阅读https://en.m.wikipedia.org/wiki/Session_hijacking。 https再次成为解决方案。