【问题标题】:Trying to wrap my head around PHP password salt/encryption试图绕过 PHP 密码盐/加密
【发布时间】:2011-10-07 04:31:26
【问题描述】:

现在我正在开发一个允许在线注册的应用程序。对于开发,密码检查只检查 MySQL 行以确保值与输入字段中的值匹配。

此代码检查该行是否存在:

$res = mysql_query("SELECT * FROM `users` WHERE `username` = '".$username."' AND `password` = '".$password."'");
                    $num = mysql_num_rows($res);
                    //check if there was not a match
                    if($num == 0){
                        //if not display error message
                        echo "<center>The <b>Password</b> you supplied does not match the one for that username!</center>";

我对实施盐系统感到困惑。我将如何更改此脚本以检查加密密码?我还没有找到一个很好的教程来详细解释这一点。

【问题讨论】:

    标签: php mysql salt


    【解决方案1】:

    salt 是在加密和解密之前添加到密码开头或结尾的一组字符,以使其更难进行暴力攻击。

    您首先创建的盐只是一个随机的固定字符系列,然后在散列之前将其添加到密码中。您还应该在将数据放入查询之前对其进行转义,以防止 MySQL 注入攻击。

    在将通行证输入数据库时​​执行此操作

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['pass']);
    $pass_hash = md5($SALT.$password);
    mysql_query(*query to insert $username and $pass_hash into db*)
    

    检查密码是否正确

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['pass']);
    $res = mysql_query(*query to extract $pass_hash from db where username==$username)
    //get the password from the $res and put it in a var
    if(md5($SALT.$pass_hash_from_db) == $password){*correct pass*} else {*invalid login*}
    

    将 $SALT 设置为一些较大的随机静态字符串,例如 $SALT="WEHGFHAWEOIfjo;cewrxq#$%";

    【讨论】:

    • 谢谢,这很有意义。
    【解决方案2】:

    如果用户注册并将其保存在您的数据库中,您将必须生成一个新的盐。

    // you save this in the database
    $encPass = encFunction( $password.$salt );
    

    当一些用户想要登录时,你检查这个密码是否是这个用户的密码列。

    注意:
    - encFunction 是你的加密函数

    【讨论】:

    • 我想主要是我想知道的是 - 什么是盐?它只是连接到 sha1 哈希的随机字符串吗?我应该组成一个恒定的随机 9 字符串并将其添加到哈希中,然后对密码检查做同样的事情吗?我的想法正确吗?
    • 是的;它应该是完全随机的。
    猜你喜欢
    • 2012-07-04
    • 2012-07-05
    • 2014-05-03
    • 2014-01-24
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2012-10-25
    • 2017-10-23
    相关资源
    最近更新 更多