如何修改nextcloud分享链接密码?

Cloud storage

1 前言

一个问题,一篇文章,一出故事。
最近在笔者需要通过更新nextCloud用户分享链接的密码,于是整理本章节。
该函数由我们部门的美女同事从nextcloud github的代码中把函数抽取出来,以便我们独立调用。

2 最佳实践

2.1 创建脚本

vim hasher.php

加入如下代码,

<?php

/**
* Description of Hasher
*/

class Hasher {
    public static function hash(string $password) {
        $options = [];
        $options['threads'] = max(1, 1);
        $options['memory_cost'] = max(65536, $options['threads'] * 8);
        $options['time_cost'] = max(4, 1);
        $options['cost'] = 10;
        return 3 . '|' . password_hash($password, PASSWORD_ARGON2ID, $options);
    }
}

// 检查是否传入了参数
if ($argc < 2) {
    echo "请提供密码字符串。\r\n";
    exit(1);
}

$password = $argv[1];
$encryptedPassword = Hasher::hash($password);
echo $encryptedPassword . "\r\n";
?>

2.2 测试脚本

php hasher.php "ul[u8Voo0lai"

可见如下输出,

3|$argon2id$v=19$m=65536,t=4,p=1$h7dYzvuBa2W9k0UVEZoyIw$vP2SF2xgAZecYigex30Ks4OCcKgTOgRllzr+MwUf4n0

2.3 更新nextcloud分享密码

假设链接如下,

https://nextcloud.cmdschool.org/index.php/s/JRiJEbtpzAryoDc

然后,我们根据token值将新的密码写入数据库,

UPDATE nextcloud.oc_share SET password='3|$argon2id$v=19$m=65536,t=4,p=1$h7dYzvuBa2W9k0UVEZoyIw$vP2SF2xgAZecYigex30Ks4OCcKgTOgRllzr+MwUf4n0' WHERE token = "JRiJEbtpzAryoDc";

然后,根据token值确认已经更新成功,

SELECT token, password FROM  nextcloud.oc_share WHERE token = "JRiJEbtpzAryoDc";

可见如下显示,

token	password
JRiJEbtpzAryoDc	3|$argon2id$v=19$m=65536,t=4,p=1$h7dYzvuBa2W9k0UVEZoyIw$vP2SF2xgAZecYigex30Ks4OCcKgTOgRllzr+MwUf4n0

2.4 测试更新后的密码

打开连接,
https://nextcloud.cmdschool.org/index.php/s/JRiJEbtpzAryoDc
输入密码”ul[u8Voo0lai”如果验证通过即成功。

没有评论

发表回复

Cloud storage
如何让nextcloud分享连接输错误密码留下日志?

1 前言 一个问题,一篇文章,一出故事。 我们最近发现有用户因为输入错误的nextcloud分享连接 …

Cloud storage
如何使用API更新netxtCloud的分享链接密码?

1 前言 一个问题,一篇文章,一出故事。 最近在笔者需要通过API去更新nextCloud用户分享链 …

Cloud storage
如何输出NextCloud函数参数到日志?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要调试NextCloud的代码,因为需要监视参数 …