我使用具有user和password字段的表单,因为在将表单发送到服务器进行验证之前,我需要对密码进行加密。为此,我使用md5.js在客户端使用salt信息进行加密。
test.php
<script LANGUAGE="Javascript" SRC="js/md5.js"></script>
<script>
function encryptPwd1(strPwd, strSalt, strit) {
var strNewSalt = new String(strSalt);
if (strPwd == "" || strSalt == "")
{
return null;
}
var strEncPwd;
var strPwdHash = MD5(strPwd);
var strMerged = strNewSalt + strPwdHash;
var strMerged1 = MD5(strMerged);
return strMerged1;
}
function validateForm(strSalt, strit) {
var strEncPwd = new String(encryptPwd1(document.getElementById("password").value, strSalt, strit));
document.getElementById("password").value = strEncPwd;
document.login.submit();
return true;
}
</script>
<form method="post" action="test1.php">
<input type="hidden"
name="salt"
id="salt"
value="8qadr4xnCPW275BaNpYX">
<label class="login">Password:</label>
<input
name="password"
id="password"
type="password" />
<input type="submit"
name="gos"
id="gos"
value="Login"
onClick="return validateForm('8qadr4xnCPW275BaNpYX','38');">
</form>这是包含使用JavaScript和md5.js的客户端加密的表单。我可以成功地加密消息并将其发送到该test1.php中的test1.php。我不知道怎么解密文本,请帮帮我。
发布于 2014-07-11 18:19:41
您希望保护明文密码不受监听网络流量的“中间人”的攻击。不幸的是,使用客户端java-script无法阻止这一点,因为攻击者也可以看到发送的java- script,并且还能够简单地从请求中删除此脚本。
保护密码传输的唯一可靠方法是使用带有SSL加密的HTTPS。这也只有在秘密已经共享(安装在浏览器中的证书)的情况下才有效。
客户端散列也可以有它的用途,但永远不会取代服务器端散列。您可以将用于哈希的CPU功率转移到客户端。在服务器端,您将不得不再次进行散列,但循环次数较少。
发布于 2014-07-11 09:19:14
请稍等片刻。
这只是一个糟糕的想法,(我可以在这里想到其他形容词,但只限于坏)。
任何人都可以用任何浏览器阅读你的页面源代码,那么如果我这样做了,我会看到什么呢……
为什么不直接给我你的银行账号和个人识别码,还有你房子和汽车的钥匙呢?
我猜你没有船,要不然你现在就已经被水淹没了!
不要试图在浏览器中执行此操作,唯一安全的方法是使用SSL。
发布于 2015-08-13 04:00:14
需要密码加密,因为当您提交时,密码跟踪将存储在您计算机上的浏览器内存中。如果黑客使用广泛可用的工具进入您的计算机,您存储的数据将被暴露。
解决这个问题的办法是让黑客更难获得你的密码。
要记住两件事: 1)通过表单提交2)通过ajax提交
在这两种情况下,重要的是控制提交的字符编码,并确保您的服务器字符编码与您的应用程序网页同步。
如果您不控制编码,那么您的ajax调用可能会以与通过表单提交的编码不同的编码结束,因此解码将不容易。
一旦你控制了它们,然后使用你想解码的任何语言的代码……但是,您需要在服务器端保留一个salt和stringit的引用。您需要在为用户提供的每个页面上随机生成不同的字符串集。
一种方法是将它们作为隐藏输入包含在表单中。但是在允许表单继续提交之前,您需要从表单中动态删除输入。
https://stackoverflow.com/questions/24688539
复制相似问题