gpt4 book ai didi

Javascript 在 POST 之前加密密码

转载 作者:行者123 更新时间:2023-11-28 04:18:44 25 4
gpt4 key购买 nike

我正在尝试在按下提交按钮时加密密码。

我不明白为什么密码输入的值没有改变,加密是正确的。

<script>
function cript(){
var pass = CryptoJS.SHA1("<?php echo $_POST["password"]; ?>");

var passString = pass.toString();

console.log(passString);
document.getElementById('inputPassword').value = passString;
}
</script>

在 HTML 表单上:

<input type="submit" class="btn btn-primary" value="Proceed" onclick="cript()">

谁能告诉我解决办法?

最佳答案

JavaScript 在浏览器中执行。 PHP 在服务器上执行。您编写的代码不起作用,因为它试图在浏览器中同时执行它们。

  1. "<?php echo $_POST["password"]; ?>"首先执行,同时在服务器上构建页面。此时,服务器上可能不存在密码,因此 javascript 中的值很可能为空。

    "<?php echo $_POST["password"]; ?>"变成 ""

  2. 当 javascript 在浏览器中加载时,它实际上是 var pass = CryptoJS.SHA1(""); .您可以使用像 firebug 这样的调试器或像 ZED 这样的代理来验证这一点,或者只是通过在浏览器中查看页面的源代码来验证这一点。执行此操作时,它不会对任何内容进行哈希处理,因此不会在密码字段中存储任何内容。

  3. 当您发帖时,密码字段为空,因为#2。您的服务器什么也得不到,因此您的密码不会更改。

顺便说一下,

  • 不要在客户端散列密码。这意味着存在安全漏洞,您可能在登录过程中对密码进行哈希处理。看起来您似乎在保护数据不被不安全地发送到服务器,但实际上您只是将密码散列到密码中。当密码散列从网络上被盗时,攻击者将能够像重放原始密码一样重放它。
  • 您忘记在密码中加盐,这会使您容易受到彩虹表攻击。
  • 不要使用 sha1 来散列密码。它有点疲软,预计任何一天都会下跌。使用 bcrypt 或 pbkdf2
  • 不要称它为“加密密码”,而是“散列密码”。虽然哈希在技术上是一种加密技术,但不准确地使用这些词既掩盖了您的经验不足,又传达了您想要的不同信息,这使得了解加密的人必须更加努力地工作才能理解您的问题以帮助您。
    • 使用“加密”和“解密”来指代可逆加密。
    • 使用“crypt”来指代没有人应该再使用的旧的弱 unix 算法。
    • 使用“哈希”或“数字指纹”来指代哈希。

关于Javascript 在 POST 之前加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30322928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com