Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2014, 15:18
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Question Избежать читерства при обыске друзей в игре для соц сетей

Сегодня делал функцию обыска друзей в игре, и наткнулся на мысль, что это будет достаточно просто взломать.
Смысл функции такой: игрок щелкает по изображению друга в игре, при этом дом друга можно обыскать. То есть сервер выдает определенное количество денег, которые разбрасываются по дому в хаотичном порядке. И игрок как бы водит фонариком и находит их за определенное время. Когда нашел деньги, они ему добавились. Обыскать одного и того же друга более, чем раз в сутки нельзя. С этим проблем нет. Но проблема в том, что в запрос можно подставить не id друга, а любых других игроков, и таким образом набить себе много денег. Образец запроса достаточно легко просмотреть, тем же фиддлером, к примеру, а потом просто менять id и отправлять заново.

Так вот отсюда вопрос, как это лучше обойти? У кого какие идеи?
Думал на счет подписи запроса, но опять же. Подпись тоже можно другую подставить. Даже если ее каким-то хитроумным способом генерировать на клиенте, а потом проверять на сервере, то все равно флешку можно декомпильнуть и посмотреть что там и как формируется.
Единственный вариант который пока пришел в голову - это ограничить количество обыскиваемых в день друзей. Но такой вариант тоже не самый лучший, так как игрокам не особо понравится

Старый 07.01.2014, 15:45
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Допустим, есть игрок A. У него есть друзья B и C. И есть игроки E и F, которые друзьями A не являются. Может ли сервер выяснить (через API соц. сети, например) кто является другом A, а кто нет?

Старый 07.01.2014, 15:56
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
В том то и вопрос. Допустим удастся создать такое для контакта, но как быть с одноклассниками?
Так-то да, было бы идеально

Старый 08.01.2014, 08:44
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 4  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
Ну разве только хранить дополнительно связи на сервере, что не совсем хорошо.
С другой стороны опять же посомтрите с другой стороны. Юзер делает 20 акков, добавляет их к себе в друзья и обыскивает их. Даже подменять ничего не надо

Старый 08.01.2014, 09:42
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Это сделать сложнее, чем просто подменить пару цифр в запросе и выполнить его снова. Fiddler позволяет это сделать легко. Да и 20 - 30 акков - это не тысячи. Плюс к тому, если постоянно не сидеть в игре с определенного аккаунта, он перестает приносить деньги.
Сейчас пока решил вопрос созданием подписи запроса, которая формируется с учетом почти всех параметров запроса, но это защитит только от ленивого хакера, который не захочет создать такой же механизм формирования подписи. Можно еще конечно дополнительно усложнить задачу, например зашиванием секретного ключа в несколько уровней встроенных swf, да еще и с какими-нибудь конкатенациями и доп. вычислениями, чтобы нельзя было просто выдернуть строку через хекс. Но, опять же, если кто-то докопается до истины)) и создаст прогу, которая будет формировать эту подпись, то все накроется медным тазом)
Раньше над этим не задумывался, но похоже такая уязвимость есть в большинстве игр, с возможностью обыскивать, или передавать что-либо друзьям. Надо попробовать хакнуть пару игр самому, чтобы убедиться

Старый 08.01.2014, 11:34
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 6  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
А что мешает хранить id друзей на сервере? Ведь какой-то функцией игрок добавляет определенный id себе в друзья. Сохранять его в этот момент. При попытке "обыска" проверять наличие отправляемого id в списке и соотв. производить обыск или нет.
__________________
interplanety

Старый 08.01.2014, 16:49
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Ничего не мешает. Но так же и читеру ничего не мешает таким образом отправить несколько тысяч запросов с id пользователей, не являющихся его друзьями, и они сохранятся на сервере как его друзья. То есть смысла в этой манипуляции вообще ноль.

Старый 08.01.2014, 18:11
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 8  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
На фейсбуке была такая штука: third_party_id - уникальный ID пользователя. В отличие от обычного ID, этот уникален не только для каждого пользователя, но и для каждого приложения (зашифрованная версия обычного ID)
Поймать его при передаче можно, но угадать айди левого человека - нет. Интерес в том, что при получении тысячи сгенерированных зашифрованных third_party_id их можно проверить на адекватность простым запросом на существование игрока с этим ID (хотя так убиться можно - на сервере проверять существование тысяч игроков).
Мне кажется ВК тоже что-то подобное должно быть.
----
Погуглил - видимо нет.
Но можно делать на сервере свой third_party_id простым SHA-2 по ID пользователя + закрытый ключ (Это не нарушит законы РФ о криптографии?). Но блин, в таком случае получается, что придется переделывать существующую систему сохранения прогресса.

Кстати, а обыскивать можно тех, кто еще не играет в игру?


Последний раз редактировалось KumoKairo; 08.01.2014 в 18:28.
Старый 08.01.2014, 19:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Кстати, а обыскивать можно тех, кто еще не играет в игру?
Конечно нет) Но ведь в группе тоже кучу id пользователей можно взять.
Для вк я проблему решил. Там метод friends.get открытый и легко выполняется с сервера. Поэтому я могу просто проверить есть ли такой id в списке друзей. И если пользователь 2 раза попытается обыскать не друга, то его аккаунт автоматически банится.
Подпись запроса тоже добавил, чтобы просто так не получалось от руки вписать новый айди.

А вот для одноклассников проблема пока еще актуальна. Но, думаю тоже решу. О результатах отпишусь тут.

Старый 08.01.2014, 23:52
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 10  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Ничего не мешает. Но так же и читеру ничего не мешает таким образом отправить несколько тысяч запросов с id пользователей, не являющихся его друзьями, и они сохранятся на сервере как его друзья. То есть смысла в этой манипуляции вообще ноль.
Т.е. друзья не взаимные? Тогда вообще в чем смысл понятия "друг"? Я так понимаю, что при добавлении в друзья друг должен тоже добавить игрока. Только тогда сохраняется его id как друга в базе. И по этим id уже проверять.
__________________
interplanety

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.