Как повысить безопасность моего проекта Unity?

Вкратце мой проект состоит из:

  • Защищенный веб-сервис RESTful API (размещенный на Heroku), обрабатывающий запросы и ответы для базы данных. Он принимает и возвращает данные JSON
  • A Unity desktop application, which doubles as a Twitch API chat bot, and communicates with the webservice to update the state of the game, as well as the state of the database.
    • IMPORTANT: This game is meant to be run by Twitch streamers, and played by users in Twitch chat

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

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

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

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


person RectangleEquals    schedule 22.09.2018    source источник


Ответы (1)


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

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

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



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

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

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

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

person RectangleEquals    schedule 22.09.2018