Шифрование паролей (Encrypt Passwords)

Дополнительная защита при авторизации и других действиях с паролями в phpBB3

Здесь вы можете скачать и получить поддержку по модам, созданным командой нашего сайта. Пожалуйста, не пишите и не задавайте вопросов, связанных с чужими разработками, используйте для этого форум ниже.
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Shredder »

Появилась сегодня вот такая информация в менеджере ошибок:
err.png
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Шифрование паролей (Encrypt Passwords)

Сообщение c61 »

Опять опечатка(( $ep_idn а не $ip_idn...
Исправлено в версии 1.0.6
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Shredder »

Похоже, нашёл баг в моде:
После переноса форума на новый сервер понадобилось настроить отправку почты через SMTP, и при введении пароля в соответствующих настройках он запоминался в зашифрованном виде. Скрин из БД:
ep_mod_smtp_error.png
А должен в незашифрованном.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Шифрование паролей (Encrypt Passwords)

Сообщение c61 »

Да, не учтен случай, когда в post передаётся массив (в данном случае config).

Вставку в common.php надо заменить на:

Код: Выделить всё

// Begin Encrypt Passwords Mod
if ( !empty($_POST) )
{
	// Get form data
	$ep_openssl_ext = function_exists('openssl_private_decrypt') ? true : false;
	for ( $ep_index=0; $ep_index<4; $ep_index++ )
	{
		if ( request_var('encrypt_passwords_' . $ep_index,'') == '' ) continue;
		if ( !$ep_openssl_ext && !isset($ep_id) )
		{
			require_once($phpbb_root_path . 'includes/encrypt_passwords/phpseclib/Crypt/RSA.' . $phpEx);
			$ep_rsa = new Crypt_RSA();
			$ep_rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
		}
		$ep_name = explode(':',$_POST['encrypt_passwords_' . $ep_index]);
		$ep_idn = (int) $ep_name[0];
		$ep_inputname = $ep_name[1];
		$ep_b64ep = request_var($ep_inputname,'');
		$ep_key_array = '';
		if ( empty($ep_b64ep) )
		{
			if ( ($ep_is_array = strpos($ep_inputname,'[')) !== false )
			{
				$ep_key_array = substr($ep_inputname,0,$ep_is_array);
				$ep_inputname = str_replace(array($ep_key_array.'[',']'),'',$ep_inputname);
				$ep_b64ep = $_POST[$ep_key_array][$ep_inputname];
			}
		}
		if ( !empty($ep_idn) && !empty($ep_b64ep) )
		{
			if ( !isset($ep_id) || ($ep_idn != $ep_id) )
			{
				$sql = 'SELECT * FROM ' . ENCRYPT_PASSWORDS_TABLE . ' WHERE ep_id = ' . $ep_idn;
				$result = $db->sql_query($sql);
				if ( $row = $db->sql_fetchrow($result) )
				{
					$ep_privatekey = $row['privatekey'];
				}
				$db->sql_freeresult($result);
			}
			if ( isset($ep_privatekey) )
			{
				$ep_id = $ep_idn;
				$ep_ep = base64_decode($ep_b64ep);
				$ep_dp = '';
				if ( !$ep_openssl_ext )
				{
					$ep_rsa->loadKey($ep_privatekey);
					$ep_dp = $ep_rsa->decrypt($ep_ep);
				}
				else
				{
					$ep_openssl_privatekey = @openssl_get_privatekey($ep_privatekey);
					@openssl_private_decrypt($ep_ep,$ep_dp,$ep_openssl_privatekey);
					@openssl_free_key($ep_openssl_privatekey);
				}
				if ( empty($ep_dp) ) $ep_dp = '';

				if ( empty($ep_key_array) )
				{
					$_POST[$ep_inputname] = $ep_dp;
					$GLOBALS['_REQUEST'][$ep_inputname] = $ep_dp;
				}
				else
				{
					$_POST[$ep_key_array][$ep_inputname] = $ep_dp;
					$GLOBALS['_REQUEST'][$ep_key_array][$ep_inputname] = $ep_dp;
				}
			}
		}
	}
	// Delete old sessions
	if ( isset($ep_id) )
	{
		$sql = 'DELETE FROM ' . ENCRYPT_PASSWORDS_TABLE . ' WHERE ep_id = ' . $ep_id . ' OR time < ' . (time() - ENCRYPT_PASSWORDS_SESSION_LIFE);
		$db->sql_query($sql);
	}
}
// End Encrypt Passwords Mod
Просьба проверить.

Добавлено спустя 27 минут 8 секунд:
Забавно: полтора года прошло и только сейчас обнаружен баг...
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Shredder »

c61 писал(а):Забавно: полтора года прошло и только сейчас обнаружен баг...
Мало людей пользуется SMTP. Я и сам его до переезда на днях не использовал.

Позже проверю фикс. Отпишусь.

Добавлено спустя 3 часа 23 минуты 13 секунд:
Всё работает, спасибо :D

Добавлено спустя 32 минуты 27 секунд:
Выложил версию 1.0.7 с исправлением.
Библиотеки, используемые в моде, за это время не обновились? А то можно и их в обновлённый архив включить.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
staiki
Сообщения: 74
Зарегистрирован: 14.06.15 10:41
Откуда: Киев
Благодарил (а): 17 раз

Шифрование паролей (Encrypt Passwords)

Сообщение staiki »

Для 3.1.5 нет такого расширения?
Alex
Сообщения: 68
Зарегистрирован: 19.11.13 16:30
Благодарил (а): 16 раз
Поблагодарили: 5 раз

Шифрование паролей (Encrypt Passwords)

Сообщение Alex »

Я правильно понимаю, что на этом форуме используется данный мод. Именно поэтому когда логинишься в поле пароля появляется много ***** ?
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Shredder »

Alex
Да.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Alex
Сообщения: 68
Зарегистрирован: 19.11.13 16:30
Благодарил (а): 16 раз
Поблагодарили: 5 раз

Шифрование паролей (Encrypt Passwords)

Сообщение Alex »

Shredder, а под 3.2 сложно будет переделать этот мод ?
Аватара пользователя
Predator
Сообщения: 109
Зарегистрирован: 06.11.15 13:59
Благодарил (а): 11 раз
Поблагодарили: 7 раз
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Predator »

Shredder писал(а):В стандартном phpBB3 все вводимые пользователями пароли отправляются на сервер в виде обычного текста
Видимо, это было в очень древних версиях движка. :?
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Shredder »

Было во всей ветке 3.0.x.
А щас они типа шифруются?) Я не в курсе.

Речь-то идёт про канал "от браузера до конечного сервера" - что сам канал не защищён. А на конечном сервере пароли шифруются и записываются в БД в зашифрованном виде по умолчанию (т.е. без модов).
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
Predator
Сообщения: 109
Зарегистрирован: 06.11.15 13:59
Благодарил (а): 11 раз
Поблагодарили: 7 раз
Контактная информация:

Шифрование паролей (Encrypt Passwords)

Сообщение Predator »

Shredder писал(а):Речь-то идёт про канал "от браузера до конечного сервера" - что сам канал не защищён
Ах, вот что имелось ввиду.
TarasJ98
Сообщения: 4
Зарегистрирован: 28.11.20 14:52

Шифрование паролей (Encrypt Passwords)

Сообщение TarasJ98 »

А стоят ли мучения с ошибками и багами мода результата, который тот выдает? В смысле..Насколько часты случаи такого вот воровства паролей?
Ответить