|
@@ -113,13 +113,13 @@ function linkToDocs($ref, $title) {
|
|
- the user's id
|
|
- the user's id
|
|
- that a same user used a token multiple times (by using a unique salt for each token)
|
|
- that a same user used a token multiple times (by using a unique salt for each token)
|
|
*/
|
|
*/
|
|
-define('SECRET_KEY_FILE', sys_get_temp_dir() . '/Niver.key');
|
|
|
|
-if (!file_exists(SECRET_KEY_FILE)) {
|
|
|
|
- $original_umask = umask(0077);
|
|
|
|
- file_put_contents(SECRET_KEY_FILE, random_bytes(32));
|
|
|
|
- umask($original_umask);
|
|
|
|
|
|
+if (time() - query('select', 'params', ['name' => 'secret_key_last_change'], 'value')[0] >= 86400 * 20) {
|
|
|
|
+ DB->prepare("UPDATE params SET value = :secret_key WHERE name = 'secret_key';")
|
|
|
|
+ ->execute([':secret_key' => bin2hex(random_bytes(32))]);
|
|
|
|
+ DB->prepare("UPDATE params SET value = :last_change WHERE name = 'secret_key_last_change';")
|
|
|
|
+ ->execute([':last_change' => time()]);
|
|
}
|
|
}
|
|
-define('SECRET_KEY', file_get_contents(SECRET_KEY_FILE));
|
|
|
|
|
|
+define('SECRET_KEY', hex2bin(query('select', 'params', ['name' => 'secret_key'], 'value')[0]));
|
|
function getAuthToken() {
|
|
function getAuthToken() {
|
|
$salt = bin2hex(random_bytes(4));
|
|
$salt = bin2hex(random_bytes(4));
|
|
$hash = hash_hmac('sha256', $salt . ($_SESSION['id'] ?? ''), SECRET_KEY);
|
|
$hash = hash_hmac('sha256', $salt . ($_SESSION['id'] ?? ''), SECRET_KEY);
|