Как повысить безопасность моего проекта Unity? - PullRequest
0 голосов
/ 22 сентября 2018

В двух словах, мой проект состоит из:

  • Безопасный веб-сервис RESTful API (размещенный на Heroku ), обрабатывающий запросы / ответы длябаза данных.Он принимает и возвращает данные JSON
  • Настольное приложение Unity, которое также выступает в качестве чат-бота Twitch API и связывается с веб-сервисом для обновления состояния игры, а также состояния базы данных.
    • ВАЖНО: Эта игра предназначена для запуска стримерами Twitch и в нее играют пользователи в чате Twitch

Поэтому мой вопрос ... Несмотря на то, что мой веб-сервис защищен, что я могу сделать, чтобы кто-то не смог просто перепроектировать мое приложение Unity, чтобы выяснить , как правильно общаться с моимвеб-сервер?

1024 * Зашифрованные HTTP трафик останавливает перехвата пакетов, но это вопрос спорный сервис, если вы все еще можете использовать те же методы, приложение использует для взаимодействия с данными.Возможно, я слишком параноик, но есть множество инструментов , которые специально нацелены на проекты Unity & C #, так чтона самом деле не потребовалось бы больших усилий.

Одна из идей, которые у меня были , состояла в том, чтобы использовать Twitch API, чтобы проверить, активно ли пользователь транслирует игру, и разрешить ему запускать игру, только есливеб-сервис не может найти дубликат IP-адреса в базе данных с установленным флагом isStreaming.Это работает в теории ... но на практике любой может создать на своей машине фальшивую учетную запись Twitch и фальшивый или "пустой" поток, а затем запустить какой-нибудь обратный код из игры.

ЕстьЕсть ли что-нибудь еще, что я мог бы сделать, чтобы минимизировать способность хакера взаимодействовать с моей базой данных?

1 Ответ

0 голосов
/ 23 сентября 2018

Простой ответ

  • Обфускация кода, совместимого с Unity

Благодаря системе плагинов Unity для этого есть несколько приличных вариантов.Некоторые являются платными опциями, которые существуют в Asset Store, а также оплаченными / бесплатными опциями третьих сторон, которые просто не связаны с Unity (но все еще могут работать).Некоторые из бесплатных опций, такие как ConfuserEx , также имеют открытый исходный код, что позволяет вам вносить пользовательские изменения кода, чтобы скрыть вашу работу.

Более сложный ответ

  • Я создал простую библиотеку классов C # и наполнил ее бессмысленной функциональностью (для тестирования)
  • Я скомпилировал сборку выпускабиблиотека
  • Я запутал его через ConfuserEx, используя Агрессивные настройки ( Максимум Настройки имели Unity выплевывая Invalid IL code ошибки)
  • Я добавил Assets/Plugins папку в мой проект Unity и поместил туда скомпилированную библиотеку
  • Я создал новый скрипт C # для проверки библиотеки изнутри Unity

... И хотя декомпилированный код былнеразборчиво, это все еще работало, как и ожидалось в Unity.Я использовал инструмент декомпилятора IL / C # (например, JustDecompile ), чтобы сравнить различия между запутанным двоичным файлом и исходным двоичным.

Так что, если бы я действительно хотел, я мог бы следовать этим оченьодни и те же шаги для всех моих важных фрагментов кода (или даже для большей части моего клиентского проекта), а также для реализации любых вышеупомянутых мер безопасности ... И, надеюсь, теперь это будет слишком тяжелой работой для любогопонять внутреннюю работу моего проекта.

...