#php #javascript #anti-cheat
#php #javascript #античит
Вопрос:
Итак, я сталкиваюсь с проблемой, когда люди создают несколько учетных записей, чтобы улучшить учетную запись с большим количеством ресурсов в игре.
Итак, моя дилемма в том, что многие пользователи используют прокси-серверы или NATd info, поэтому некоторые легализованные пользователи будут забанены, если у меня будет только 1 пользователь на ip.
Есть ли способ (с помощью Javascript и PHP) получить идентификатор uniq, специфичный для компьютера (без изменений аппаратного обеспечения, изменение аппаратного обеспечения компьютера, вероятно, изменило бы идентификатор).
Любая идея или комментарии были бы очень полезны
(Следующее было восстановлено на основе ответа, сделанного Полом, но удалено другим за неуместность.)
Я не могу изменить клиент на многое, потому что это браузерная игра, поэтому получение hwid было бы возможно. Но как с JS или PHP.
Добавление таймеров и ограничений для предотвращения передач установлено, но не останавливает их полностью. Есть возможность отправить электронное письмо для исключения IP. но это медленно и утомительно. Мне интересно, есть ли окончательный способ сгенерировать определенный идентификатор для определенного компьютера (не на основе ip), который позволил бы нескольким учетным записям входить в систему с одного компьютера, но может быть выполнен вход с одного ip
Комментарии:
1. короче говоря, нет; нет способа запретить пользователю настраивать несколько учетных записей.
2. добро пожаловать в SO! Пожалуйста, не используйте раздел ответов для добавления разъяснений. Вы можете отредактировать свой вопрос, чтобы добавить больше деталей (похоже, вы используете две учетные записи, возможно, вы захотите объединить их и использовать одну). Или вы можете добавлять комментарии к ответам на ваши вопросы (для этого требуется репутация)
3. какая ирония, когда он спрашивает о том, как обнаружить игроков, использующих несколько учетных записей, когда у него самого есть несколько учетных записей на SO … : P
Ответ №1:
Поскольку мы говорим о другой учетной записи, возможно, на другом IP и клиенте, вы не сможете легко обнаружить учетные записи-клоны.
Вы можете выбрать еще два варианта эвристики и игрового процесса
- Как предлагалось ранее (@dqhendricks), разделите свои ресурсы и реализуйте совместное использование и т.д. Таким образом, чтобы вы не могли легко помогать другой учетной записи с каждой новой учетной записью. Сделайте поиск других учетных записей вначале трудным / невозможным, сделайте общедоступные ресурсы функцией более высокого уровня и т.д. Недостатком является то, что это меняет игровой процесс, это не обязательно должно быть желаемым.
- Вы можете выполнить эвристику поведения. Может иметь место определенное нежелательное поведение: взаимодействие только с 1 другим аккаунтом и т.д. Вы могли бы настроить некоторые переменные и т.д., Но вы могли бы легко увидеть подозрительное поведение. Сделайте какой-нибудь расчет «баланса». Большинство игровых взаимодействий имеют некоторый баланс. Конечно, лучшие игроки могут заключить выгодную сделку, потому что они знают больше, или наоборот: они заключают невыгодную сделку, чтобы помочь игрокам поменьше. Но когда один игрок только отдает и никогда не берет, он «помогает», фактически не играя сам: это может означать, что это клон
Все, что связано с ip-адресами или информацией о клиенте ($ _SERVER) и т.д., В данном случае, насколько я понимаю, бесполезно..
Ответ №2:
Вы могли бы запретить несколько входов в одну учетную запись (имя пользователя / пароль).
Если проблема в том, что они создают несколько учетных записей с разными адресами электронной почты и т.д. … и новыми именами пользователей и паролями, то вы могли бы сделать это, например, с помощью файлов cookie, которые используют уникальный идентификатор оборудования, а затем вы просто проверяете, что одновременно активны не более одной учетной записи на основе этого идентификатора hwid. если аппаратное обеспечение меняется, это не имеет значения, поскольку это относительно.
Чтобы уточнить, является ли идентификатор HW для первого входа 1234, тогда второй логин сгенерирует тот же hwid. Если вы проверяете файлы cookie или свою базу данных (не имеет значения, где вы их храните) на тот же hwid, то вы знаете, что он уже зарегистрирован.
Если аппаратное обеспечение изменится, это не имеет значения, поскольку они все равно будут генерировать один и тот же hwid.
Однако, если они используют два компьютера, идентификатор программного обеспечения будет другим, и это сработает.
Комментарии:
1. Как бы вы создали HardwareID в веб-среде? Тот же компьютер, другой IP (прокси) и другой браузер = неразличимо, насколько я знаю
Ответ №3:
{общие ресурсы} = {общее количество ресурсов} — МАКС(({начальные ресурсы} — {потраченные ресурсы}), 0)
сделайте доступными только не запускаемые ресурсы или, возможно, сделайте совместное использование ресурсов способностью, которую вы не получите до уровня x.
Ответ №4:
Предотвращение подделки / дублирования учетных записей (при одновременном обеспечении работы всех законных учетных записей) является очень сложной задачей — по причинам, изложенным другими. В дополнение к попыткам защититься от одновременного использования нескольких учетных записей, необходимо избегать использования нескольких учетных записей одновременно.
Основная проблема заключается не столько в определении, откуда подключена учетная запись, сколько в способности доверять тому, что у пользователя только одна учетная запись — и с этой целью единственным «реальным» решением является использование системы, которая уже предоставляет такого рода информацию, такую как кредитная карта или учетная запись PayPal 😉 То есть просто запретить кому-либо создавать новую учетную запись (хотя учетная запись может иметь несколько псевдонимов / профилей, но их можно тривиально отследить), если они не могут доказать «уникальность».
(Также учтите, что у двух человек могут быть две разные учетные записи на одном компьютере.)
Удачного кодирования.
Комментарии:
1. Это могло бы быть, но это немного усложнило бы присоединение к игре : (
2. @Nanne Да, это не идеальная ситуация для бесплатной игры 🙂
3. Но, я согласен, одно из единственных 100% решений.
Ответ №5:
Я также управляю сервером онлайн-игр. Чтобы избежать вашей дилеммы, либо измените игровой клиент, чтобы он считывал MAC-адрес, и разрешайте только 1 учетную запись на компьютер. Или регистрируйте IP-адреса и разрешайте передавать ресурсы на этот ip только дважды. 3-й вариант: запретить передачу материалов с одних и тех же IP-адресов 4-й вариант: Добавить таймер на передачу ресурсов, заставить их подождать 10 минут игрового процесса, прежде чем они смогут сделать что-нибудь вроде избавления от предметов для других
Комментарии:
1. да, у каждого компьютера есть mac-адрес, вы всегда можете изменить свой клиент для просмотра mac-адреса, если у вас есть возможность изменять клиент, который вы используете
2. Вопрос касается браузерной игры. PHP здесь вам не поможет, это СЕРВЕРНАЯ часть, и у него не будет доступного MAC-адреса. Также маловероятно, что вы сможете найти его с помощью javascript. Если бы вы захотели, я бы счел это скорее ошибкой, чем особенностью. Итак, нет, в сценарии, описанном в вопросе, у вас нет mac-адреса, который вы действительно можете прочитать. На основе IP не сработает, прочитайте 2-й абзац вопроса.