javascript - 使用变量中预设的密码登录系统

标签 javascript php variables authentication

我是 php 新手,我正在尝试制作一个登录系统,但不知何故它不起作用。我在变量中预定义了密码,并创建了一个函数来检查输入的密码是否与变量中的密码匹配。

这是我到目前为止的代码:

<?php $validkey = "Test" ?>
<script type="text/javascript">
    function check_value()
    {
        var password = document.getElementById("password").value;
        if (password == '<?php echo $validkey; ?>')
        {
            location.href = "tafels.html";
        }
    }
</script>
<input type ="text" name="password" id="password" />
<button onclick="check_value();">Login</button>

最佳答案

这不是登录过程应有的工作方式。 首先,密码应该被散列并存储在数据库中。 绝不将密码存储为明文。 其次,密码验证应该在服务器端的 PHP 文件中进行。

为了解释为什么在前端验证密码是危险的,只需检查这部分代码:

if(password=='<?php echo $validkey; ?>')
{

    location.href = "tafels.html";

}

当服务器处理您的 PHP 脚本时,它会将有效密码回显到生成的 HTML 中。然后该 HTML 将被发送到浏览器。假设有效密码是“p@$$w0rd”,如果您检查页面的源代码,您将发现以下内容:

if(password=='p@$$w0rd')
{

   location.href = "tafels.html";

}

服务器将替换此:

<?php echo $validkey; ?>

带有密码的值。这对每个人来说都是可见的。一点也不安全。

关于javascript - 使用变量中预设的密码登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36883228/

相关文章:

javascript - 如何通过 Rails 5 中的链接选择单选按钮?

javascript - 可以打印出一个对象,但无法在JS中访问它的值

php - CakePHP 输出一个选择输入,用于从连接表中选择一个值

php - Symfony Composer 安装 - 未捕获 Symfony\Component\Debug\Exception\ClassNotFoundException : Attempted to load class "SensioGeneratorBundle"

php、odbc 和 vfp

java - 无法解决 "local variable needs to be final"

javascript - GridX 每行显示相同的数据

javascript - 在一个 block 中显示所有大写字母

c++ - 我在 DLL 项目 C++ 中收到 "nonstatic member reference must be relative to specific object"错误

ios - 什么时候使用?、!、无或惰性?