Double Account Preventer

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Double Account Preventer

Сообщение c61 »

Shredder писал(а):Последнюю версию скрипта можно взять здесь
Аааабижаишь, там и брал)

Где в коде мода легче всего взять нужные куки и запихнуть их, например, в $user ? Судя по всему, нужна 'bc', ставится в session.php и functions_dap.php, то есть всего в двух местах ?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

'ck' - это проверочная кука с id пользователя и username, закодированном в base64. 'bc' - кука бана. 'bc' ставится именно в указанных тобой файлах в двух местах. 'ck' ставится там же в этих же двух местах, непосредственно перед 'bc', и третий раз в ucp_register.php - сразу при регистрации аккаунта. Все куки ставятся при помощи стандартной phpBB-функции set_cookie. Установка в functions_dap.php посредством функции cookie_tracking - это проверка пользователей на входе, когда они вводят логин и пароль, поэтому данная проверка вставлена в стандартную phpBB-функцию check_ban. Но так как основатели в phpBB не проверяются с помощью check_ban, то для них cookie_tracking вызывается отдельно, незадолго перед check_ban. Установка в session.php - это проверка при переходе пользователя по страницам в уже авторизованном виде.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Double Account Preventer

Сообщение c61 »

Shredder писал(а):...Главное, чтобы это работало на практике)
Проверил. К сожалению, evercookie глючат в некоторых браузерах. Так, opera могут подвесить, в ff могут быть проблемы с "нормальными" кукисами для сайта и т.п. Обнаруживаются также конфликты с KAV/KIS (особенно для корпоративных версий).

Моё мнение - evercookies использовать не следует.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Возможно, это происходит из-за каких-то определённых видов cookie. Там то ли уж есть возможность, то ли автор планировал в новой версии сделать возможность выбирать, какие виды отслеживать, а какие отключить.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Double Account Preventer

Сообщение c61 »

Shredder писал(а):...это происходит из-за каких-то определённых видов cookie
Именно так оно и есть. Для выбора видов надо вносить изменения в код evercookie, лучше пусть это сделает автор, когда у него появятся желание и возможность)

Однако, отмечу, что изменения в самом моде для подключения evercookie очень простые - по паре строчек кода определения имени куки для последующего использования в hook system. Добавляется только хук, который внедряет в каждую страницу код javascript, обрабатывающий видимые и невидимые кукисы. Так что если автор evercookie когда-нибудь их доведет до ума, то сможем быстро их приделать)
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

c61
Можешь привести эти правки здесь, чтобы их потом не потерять?
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Double Account Preventer

Сообщение c61 »

Примерно так (после установки мода Double Account Preventer):
  1. в includes/functions_dap.php найти

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

    		if ($user->data['user_type'] < USER_IGNORE && $config['dap_cookie_ban'] && $user_bc != 3)
    
    вставить ПЕРЕД

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

    		$user->dap_evercookie_name  = rawurlencode($config['cookie_name'] . '_bc');
    
  2. в includes/session.php найт

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

    				if ($this->data['user_type'] < USER_IGNORE && $config['dap_cookie_ban'] && $user_bc != 3)
    
    вставить ПЕРЕД

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

    				$this->dap_evercookie_name  = rawurlencode($config['cookie_name'] . '_bc');
    
  3. в includes/hooks добавить файл hook_dap_evercookie.php со следующим содержимым

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

    <?php
    /**
    *
    * @package phpBB dap_evercookie
    * @version $Id$
    * @copyright (c) 2012 c61 http://www.phpbbguru.net
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */
    
    /**
    * @ignore
    */
    if (!defined('IN_PHPBB'))
    {
    	exit;
    }
    
    function dap_evercookie()
    {
    	global $template, $user;
    
    	if (!defined('ADMIN_START')
         && !defined('IN_INSTALL')
         && defined('HEADER_INC')
         && isset($template->_rootref['DEBUG_OUTPUT'])
         && isset($user->dap_evercookie_name)
           )
    	{
    		$ec_baseurl = ((defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './') . 'evercookie/';
    
    		$template->_rootref['DEBUG_OUTPUT'] .= '
    		<script type="text/javascript" src="' . $ec_baseurl . 'jquery-1.7.1.min.js"></script>
    		<script type="text/javascript" src="' . $ec_baseurl . 'swfobject-2.2.min.js"></script>
    		<script type="text/javascript" src="' . $ec_baseurl . 'evercookie.js"></script>
    
    		<script type="text/javascript">// <![CDATA[
    
    			function _ec_getCookie(name){
    				var start = document.cookie.indexOf(name+"=");
    				var len = start+name.length+1;
    				if((!start) && (name != document.cookie.substring(0,name.length))) return null;
    				if(start == -1) return null;
    				var end = document.cookie.indexOf(";",len);
    				if(end == -1) end = document.cookie.length;
    				return unescape(document.cookie.substring(len,end));
    			}
    
    			function _ec_setCookie(name, value){
    				document.cookie = name+"="+escape(value);
    			}
    				
    			_ec_baseurl = "' . $ec_baseurl . '";
    
    			var _ec_      = new evercookie();
    
    			var _ec_name  = "' . $user->dap_evercookie_name  . '";
    			var _ec_value = _ec_getCookie(_ec_name);
    
    //
    // здесь будет код обработки evercookie
    //
    
    		// ]]></script>
    		';
    	}
    }
    
    $phpbb_hook->register(array('template', 'display'), 'dap_evercookie');
    
    ?>
    Код вставки evercookie будет зависеть от того, что сделает автор скрипта, пока это не ясно. Функции получения и установки обычных кукисов здесь для примера, они в конечном варианте будут отличаться...
  4. создать в корне форума каталог evercookies, переписать в него jquery-1.7.1.min.js (как в примере выше) или из комплекта evercookie, а также файлы (из комплекта evercookie):

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

    evercookie.fla
    evercookie.js
    swfobject-2.2.min.js
    evercookie.php
    evercookie_cache.php
    evercookie_etag.php
    evercookie_png.php
    evercookie.swf
    evercookie.xap
    
    Перечень может отличаться для других версий.
P.S. С поиском в functions_dap.php и session.php мог маленько напутать, поскольку искомые строки мог и изменить... Хотя вроде не менял...
Аватара пользователя
Юрий5
phpBB 1.4.1
Сообщения: 45
Стаж: 15 лет 6 месяцев
Откуда: Киев
Благодарил (а): 7 раз

Double Account Preventer

Сообщение Юрий5 »

Спасибо автору за мод! Бан по куках очень полезный!
Сегодня тестировал-проверял мод, обнаружил одну маленькую особенность.

Забанил тестовый аккаунт на 1 час, зашел с тестового аккаунта с другого компа, пишет ля-ля-ля "Вы забанены...."
Потом пробовал регится, все ок, пишет как и должно быть - "Вам низяя регистрироватся".
Потом разбанил тестовую учетку и попробовал зарегистрироватся снова на 2м компе, пишет опять "Вам низзя регистрироватся".

То есть получается как, если я забанил кого-то, например на 7 дней, то он зайти (зарегистрироватся) не сможет после 7ми дневного срока? Пока он куки не почистит он зайти не сможет? Или я немного "нублю"? :)
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Юрий5
Бан по кукам не даётся на время, он постоянный. Если хотите кого-то разбанить, добавьте его в исключения или в белый список. Более подробно написано в первом сообщении темы.
Аватара пользователя
Michel
Поддержка
Поддержка
Сообщения: 658
Стаж: 14 лет 8 месяцев
Откуда: Липецк
Благодарил (а): 146 раз
Поблагодарили: 82 раза

Re: Double Account Preventer

Сообщение Michel »

В общем во время тестирования мод показал себя с хорошей стороны, но поставив его основной форум - возникли непонятки. В общем сейчас не выдаёт по по чему он считае что юзер возможный клон. Совпадение по IP и Cookie стоят пустыми. Выдаёт вот такое сообщение:
Зарегистрирован новый пользователь, который имеет общие IP-адреса и/или общие cookie с некоторыми другими пользователями. Просмотрите его профиль для более детальной информации.

Информация об аккаунте:

Имя пользователя: evil_tashkenta
IP-адрес: 89.146.111.121
E-mail: evil-tashkenta@inbox.uz
Дата регистрации: 03 апр 2013, 01:48
Совпадения по IP:
Совпадения по cookie:
Хотя во время тестирования выдавал что "Совпадение по cookie: Ник пользователя"
С чем это связано?

И ещё, мод настроен на вывод сообщения на форуме. Сообщение он выводит, но: Дата размещения сообщения стоит верно. А вот в строке последнее сообщение, пишет дату:
Гость
01 янв 1970, 05:00
Как исправить глюк с датой?
phpBB 3.3.19 • php 8.5.10 • MySQL(i) 8.0.25-15
Расширения для phpBB • Стили для phpBB
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Michel
"Игнорировать неактивированных" - вот это стоит, да?

Добавлено спустя 2 часа 46 минут 37 секунд:
В общем замените файл functions_dap.php на тот, что в архиве.
[файл удалён, т.к. включён в мод]

Насчёт гостей из прошлого века ничего не скажу, в моём моде таких багов нету.
Последний раз редактировалось Shredder 03.06.2013 11:34, всего редактировалось 1 раз.
Аватара пользователя
Джим
phpBB 2.0.0
Сообщения: 218
Стаж: 16 лет 11 месяцев
Благодарил (а): 160 раз
Поблагодарили: 69 раз

Re: Double Account Preventer

Сообщение Джим »

Shredder писал(а):"Игнорировать неактивированных" - вот это стоит, да?
У меня бывала такая же ситуация, как и у Michel (пустые совпадения), при этом, действительно, была настройка "Игнорировать неактивированных".
А вот дата "01 янв 1970" встречалась еще на предыдущей версии, т.е. от "игнорирования неактивированных" не зависит.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Джим
Какая версия phpBB у вас установлена? Тот же самый вопрос к Michel. Закономерности какие-нибудь замечали в появлении этой даты?
Аватара пользователя
Джим
phpBB 2.0.0
Сообщения: 218
Стаж: 16 лет 11 месяцев
Благодарил (а): 160 раз
Поблагодарили: 69 раз

Re: Double Account Preventer

Сообщение Джим »

Shredder писал(а):Какая версия phpBB у вас установлена?
Версия 3.0.11. Перед этим стояла 3.0.8, на ней такая дата не вылезала.
Но кстати, посмотрел, последний раз такое было в конце октября 2012. И только на одном из нескольких моих форумов.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Джим писал(а):И только на одном из нескольких моих форумов.
Может, конфликт с каким-то из модов? Какие специфические моды есть на том форуме, которых нет на других?

Вернуться в «Бета-версии модов для phpBB 3.0.x»