使用PHP和javaScript登录解决方案的密码哈希

Dan*_*iel 3 javascript php login

我知道,出于安全原因,有必要对用户的密码进行哈希(使用salt)并将其与存储的哈希密码进行比较,因此如果其他人获得哈希字符串,他将无法计算密码或外观它在彩虹桌上.

我不明白这个方法的一部分.假设我有这个标准的登录表单

<form method='post' action='login.php'>
    <input type='text' name='user' />
    <input type='password' name='password' />
    <input type='submit' name='submit' value='login' />
</form>
Run Code Online (Sandbox Code Playgroud)

然后我用PHP登录

<?php
    if(isset($_POST['submit'])){
        $username = $_POST['username'];
        $password = sha1($_POST['password']);
        $authorize = $login_object->login($username, $password);
    }
?>
Run Code Online (Sandbox Code Playgroud)

并且,在幕后,$login_object负责使用数据库进行身份验证并返回true/false.(我做了这个对象,我有真实的,有用的对象来做这个)

但这意味着POST request旅行中的密码是原始的,没有散乱的,不安全的!任何人都可以拦截真实密码!

所以我想的是我应该在发送之前使用javascript来密码密码.我将有一个隐藏字段<input type='hidden' name='real_password' value='' />并让javaScript复制输入名为password的值,将其哈希,将其放入real_password隐藏输入并清空密码字段.这样,POST request它将具有哈希密码而不是原始的,不安全的原始密码.

我说的是对的,还是我应该在php上进行哈希?

Lev*_*zél 5

Hashing可以保护服务器端的数据.要保护数据流到服务器,请使用HTTPS.在这方面,密码或其哈希是否在线路上被盗(并且稍后重复)没有区别.HTTPS还授予证书以确保在用户的浏览器中显示挂锁(切记在没有适当认证的情况下永远不要在页面中输入重要密码).