Программно здание htpasswd

У вас нет проблемы с «последними двумя».

Однако у вас есть проблема со всеми из них, но одна точка за другой.

Literal даты зависят от культуры вашей системы

. Ваши даты интерпретируются как ММ-ДД-ГГГГ. Эта интрепретация зависит от культуры вашей системы. Первые три превращаются в неправильные даты, но работают. 4-й перерыв и пятый никогда не выполняются (из-за ошибки до этого).

Таким образом, фактическая ошибка лежит в строке 4.

Всякий раз, когда вы занимаетесь датами, используйте независимые от культуры форматы , Лучше использовать любой из следующих вариантов:

универсальный формат

20150730 (=> the 30th of July in 2015)

Формат ODBC

{d'2015-07-30'} or {t'23:30:59'} or {ts'2015-07-30 23:30:59'}

ISO 8601

'2015-07-30T00:00:00'
20
задан Cœur 8 December 2017 в 13:41
поделиться

3 ответа

. файлы httpasswd являются просто текстовыми файлами с определенным форматом в зависимости от указанной хеш-функции. Если Вы используете MD5, они похожи на это:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

Это - вход в систему, двоеточие, $apr1$, соль и 1000 раз md5 закодированный как base64. Если Вы выбираете SHA1, они похожи на это:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M=

Это - вход в систему, двоеточие, строка {SHA} и хеш SHA1, закодированный base64.

, Если Ваш язык имеет реализацию или MD5 или SHA1 и base64, можно просто создать файл как это:

<?php

$login = 'foo';
$pass = 'pass';
$hash = base64_encode(sha1($pass, true));

$contents = $login . ':{SHA}' . $hash;

file_put_contents('.htpasswd', $contents);

?>

Вот больше информации о формате:

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

34
ответ дан 30 November 2019 в 00:27
поделиться

Trac поставлется с заменой Python для htpasswd, который я уверен, что Вы могли портировать на свой предпочтительный язык: htpasswd.py.

-1
ответ дан 30 November 2019 в 00:27
поделиться

Из того, что это говорит относительно веб-сайта PHP, можно использовать склеп () в следующем методе:

<?php

// Set the password & username
$username = 'user';
$password = 'mypassword';

// Get the hash, letting the salt be automatically generated
$hash = crypt($password);

// write to a file
file_set_contents('.htpasswd', $username ':' . $contents);

?>

Часть этого примера может быть найдена: http://ca3.php.net/crypt

Это, конечно, перезапишет весь существующий файл, таким образом, Вы захотите сделать некоторую конкатенацию.

я не на 100% уверен, что это будет работать, но я вполне уверен.

-1
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: