Php 如何重置OpenCart 2+;管理密码?
显然,新的(v2)OpenCart密码加密方案不是一个简单的md5散列。在我为我的OpenCart安装更改了主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西Php 如何重置OpenCart 2+;管理密码?,php,opencart2.x,Php,Opencart2.x,显然,新的(v2)OpenCart密码加密方案不是一个简单的md5散列。在我为我的OpenCart安装更改了主机后,我试图在网上搜索重置管理员密码的方法,但找不到任何东西 谢谢。如果您只需要重新获得访问权限并更改密码,那么您可以非常轻松地完成此操作。打开system/library/user.php(system/library/cart/user.php在更高版本中)并找到行的开头 $user_query = $this->db->query("SELECT * FROM " .
谢谢。如果您只需要重新获得访问权限并更改密码,那么您可以非常轻松地完成此操作。打开
system/library/user.php
(system/library/cart/user.php在更高版本中)并找到行的开头
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username =
在WHERE
前面放置一个#
将其更改为
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user #WHERE username =
和保存。这允许您使用第一个帐户(通常是默认的管理员帐户)登录,而无需任何用户和密码。一旦这样做,请将其反转并再次保存。您仍将登录并可以编辑用户数据,如您所愿编辑密码密码由OpenCart(从admin/model/user/user.php
)存储为
假设您有DB访问权限,您可以按以下方式检索salt
SELECT salt FROM your_db.oc_user WHERE username='your_username';
然后生成新的散列,例如在bash中($SALT是前一个命令的结果):
最后,使用此新哈希更新数据库:
UPDATAE your_db.oc_user SET password='newhash' WHERE username='your_username';
然后使用新密码登录。通过phpMyAdmin
或MySQL
命令提示符编辑MySQL数据库,重置OPENCART管理员密码
重置管理密码
的唯一方法是通过phpMyAdmin
修改oc\u user
中的密码列,类似于狩猎丝绸之路,或者通过MySQL
命令提示符更改密码
列。您无法使用MySQL
命令提示符生成新的Salt&Hashing,如最后所述。按照以下步骤操作:
导航到oc\u user
表并查找名为password&salt的列
并更改所需用户id的值
密码:D1C194DAFFB03FC2653027C87F76A12A4 EAEAC5F
盐:x3x6r693j
此字符串或散列组合将所需用户的管理密码更改为“password
”(不带引号)。此方法可能会产生轻微的安全风险,因为salt将是一个公开的数据,在这里发布
点击“开始”。它会将您的密码更改为密码。现在,使用现有用户名和新密码登录OpenCart管理员(www.yourwebsitename.com/Admin)仪表板
用户名:
密码:密码
通过了解您的用户\u id,可以通过一个命令完成上述所有步骤:
update `oc_user` set `password` = sha1( concat(`salt`, sha1( concat(`salt`, sha1('password'))))) where user_id = 1
解释:
$salt = substr(md5(uniqid(rand(), true)), 0, 9)
密码是用随机密码加密的
sha1($salt . sha1($salt . sha1($password)))
上述方法用于加密文件admin/model/user/user.php中的密码
SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1( 'password' ) ) ) ) )
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30
结果:
D1C194DAFB03FC2653027C87F76A12A4 EAEAC5F
对于盐:
$salt = substr(md5(uniqid(rand(), true)), 0, 9)
uniqid()
、password\u hash
和password\u verify
都是纯PHP函数。它们与MySQL无关
密码\u散列不使用MD5算法对密码进行散列。md5和password_hash()产生两种不同的长度
导航到
您可以在数据库>oc_用户
密码0c7a864c5a737f08f001f3123849ba5e03af3d06
SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1( 'password' ) ) ) ) )
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30
和盐HYSQS59P9
SELECT SHA1( CONCAT( salt, SHA1( CONCAT( salt, SHA1( 'password' ) ) ) ) )
FROM oc_user
WHERE user_id =1
LIMIT 0 , 30
到管理员用户行。您可以使用以下脚本生成新密码:
<?php
$salt = 'pMiPpQ7N4'; //salt, update user.salt with this
$password = 'test123'; //actual password
//update user.password with this
echo sha1($salt . sha1($salt . sha1($password)));
?>
假设您有权访问php文件,请在文本编辑器中打开文件系统/library/cart/user.php,并将login()方法的第1行第40行更改为:
致:
这将删除密码检查,因此无论您输入的密码如何,您都将始终登录登录后,立即将此行更改回,因为这将允许任何人以任何用户帐户登录,然后在“用户-用户-编辑”下更改密码。创建新用户。将该用户的密码复制到您的管理员帐户。@ceejayoz您还需要复制salt值across@JayGilford希望他们使用的是行业标准的bcrypt,在这种情况下,盐是散列的一部分。如果这是真的@ceejayoz-@JayGilford eww就好了/我发抖这节省了我几个小时。。。但是,在我的文件版本中,您突出显示要搜索的行出现了两次,这导致了一些混乱。对我来说,这是一个好主意,当您访问DB my OpenCart版本3.0.3.1时,如果您想要快速简单的内容,请选择此选项,但不要忘记在完成后重新更改密码。
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND status = '1'");