|
Поделиться

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

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

Здесь вы можете скачать и получить поддержку по модам, созданным командой нашего сайта. Пожалуйста, не пишите и не задавайте вопросов, связанных с чужими разработками, используйте для этого форум ниже.

Сообщение Shredder » 20.03.14 15:23

Появилась сегодня вот такая информация в менеджере ошибок:

err.png
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 867
Зарегистрирован: 22.08.13 09:05

Сообщение c61 » 20.03.14 17:30

Опять опечатка(( $ep_idn а не $ip_idn...
Исправлено в версии 1.0.6
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Shredder » 02.09.15 07:09

Похоже, нашёл баг в моде:
После переноса форума на новый сервер понадобилось настроить отправку почты через SMTP, и при введении пароля в соответствующих настройках он запоминался в зашифрованном виде. Скрин из БД:
ep_mod_smtp_error.png

А должен в незашифрованном.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 867
Зарегистрирован: 22.08.13 09:05

Сообщение c61 » 02.09.15 12:13

Да, не учтен случай, когда в 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 секунд:
Забавно: полтора года прошло и только сейчас обнаружен баг...
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Shredder » 02.09.15 13:55

c61 писал(а):Забавно: полтора года прошло и только сейчас обнаружен баг...

Мало людей пользуется SMTP. Я и сам его до переезда на днях не использовал.

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

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

Добавлено спустя 32 минуты 27 секунд:
Выложил версию 1.0.7 с исправлением.
Библиотеки, используемые в моде, за это время не обновились? А то можно и их в обновлённый архив включить.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 867
Зарегистрирован: 22.08.13 09:05

Сообщение staiki » 08.09.15 17:05

Для 3.1.5 нет такого расширения?
staiki
 
Сообщения: 74
Зарегистрирован: 14.06.15 10:41
Откуда: Киев

Сообщение Alex » 04.05.17 01:33

Я правильно понимаю, что на этом форуме используется данный мод. Именно поэтому когда логинишься в поле пароля появляется много ***** ?
Alex
 
Сообщения: 65
Зарегистрирован: 19.11.13 16:30

Сообщение Shredder » 09.05.17 14:32

Alex
Да.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 867
Зарегистрирован: 22.08.13 09:05

Сообщение Alex » 11.05.17 04:06

Shredder, а под 3.2 сложно будет переделать этот мод ?
Alex
 
Сообщения: 65
Зарегистрирован: 19.11.13 16:30

Пред.

Вернуться в Модификации сайта phpBB-Work.ru

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1