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