首页 文章

Opencart:从客户表中获取解密密码

提问于
浏览
-2

当客户注册新帐户时,我们必须向他们发送确认电子邮件,我的问题是我需要发送每个客户确认电子邮件并附上他们刚刚创建的登录电子邮件地址和密码...所以我怎样才能获得他们的密码从我的 customer 表中字段 password .. ??我只想回复这个 password 客户验证电子邮件页面,我想要....

<?php echo $password; ?>

任何的想法 . ?谢谢...

4 回答

  • 1

    简短的回答 - 你不能 . 一般来说,读取SHA1,MD5,盐和散列 . 谷歌是你的朋友 .

    See Related Question

    您唯一的选择是一起删除加密并将其保存为未加密的,这不是很安全 .

    再想一想,如果您在注册期间执行此确认电子邮件,则在提交表单之前将未加密的密码字符串存储在某个变量中,然后在您的邮件脚本中使用它 . 数据库中的密码仍将加密

  • 0

    说实话, I hate every website I register to that sends me a confirmation email containing my password!!! 很快我就后悔甚至注册了......

    所以对你来说是最好的答案和选择: do not send a password back to user - 他知道他在注册过程中输入了什么密码,即使他丢失了密码,无论是使用他的账户管理还是"Lost password"链接,他仍然可以将其更改为另一个密码 .

  • 1

    如果您需要,请保存您需要的密码密码副本:

    1)在您的数据库中创建一个新表(对于此示例表,该表称为temp,包含varchar字段mail和pass)
    2)找到注册文件:/catalog/model/account/customer.php
    3)定位线从以下开始:

    $this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" .
    

    应该在第14行左右
    在其后添加一个新行,如下所示:

    $this->db->query("INSERT INTO " . DB_PREFIX . "temp SET mail = '" . $this->db->escape($data['email']) . "', pass = '" . $this->db->escape($data['password']) . "'");
    
  • 10

    默认情况下,Open Cart使用SHA1以单向加密方式对密码进行哈希处理 . 简单来说,这意味着密码不打算被去除 . 当用户登录时,系统再次对用户输入进行哈希处理并比较哈希值 . 这称为单向加密,非常安全 .

    解密它的唯一常见方法(比如说黑客)将使用存储所有原始和散列结果的碰撞表 . 为了让黑客的生活更加艰难,OpenCart还使用Salt(为每个Salt密钥创建新的不同冲突表),因此不太可能解密密码(尽管许多开发人员已经不推荐使用SHA-1,因为目前已知的可用性并且最好使用SHA-256) .

    话虽这么说,我建议2个选项:

    • 将加密更改为双向加密,例如内置在 mcrypt_encrypt()/mcrypt_decrypt() 中的php . OpenCart实际上可以帮助您,在System / Libaray / encryption.php下查看 . 您需要更改catalog / model / account / customer.php模型 . 您还需要更改控制器,使其实际包含$ this-> data ['password'] = $ customer_info ['password'];这将确保您可以在.tpl文件中访问$ password .

    • 因为我建议发送链接到index.php?route = account / forgotten以防忘记密码 .

相关问题