@v170s

Как организовать безопасную работу MySQL + PHP для игры на Unity?

Добрый день! Есть игра на юнити, она подключается через UnityWebRequest к PHP скрипту (использую ORM redbeanphp), далее скрипт подключается к базе данный MySQL. Теперь встал вопрос безопасности всего этого. Если злоумушленник, декомпилировав игру получит прямые ссылки к скриптам PHP, может ли он в теории чего нибудь натворить плохого? Или это все решается хорошим хостингом? Пока код пишется, использую MAMP чтобы создать сервер локально. Пароли подключения к БД очевидно будут другие, плюс разделю ответственность между пользователями БД(чтобы ни у одного не было полного доступа, а только на чтение-запись в определенную таблицу). Про MySQL инъекции знаю, поэтому использую ORM. Пароли юзеров в БД хранятся в зашифрованном виде. И вообще, достаточно ли такой способ подключения к БД безопасный? Я в информационной безопасности мало что понимаю, поэтому обращаюсь сюда. Спасибо!

WWWForm form = new WWWForm();
        form.AddField("name", nameField.text);
        form.AddField("password", passwordField.text);
        UnityWebRequest www = UnityWebRequest.Post("http://localhost/sqlconnect/register.php", form);
        yield return www.SendWebRequest();


require 'rb.php';
R::setup('mysql:host=localhost;dbname=myDB', 'root', 'root');
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
Если злоумушленник, декомпилировав игру получит прямые ссылки к скриптам PHP, может ли он в теории чего нибудь натворить плохого?

Эти скрипты PHP должны быть выполнимыми не должны быть скачиваемыми (обычно дефолтно настроенный веб-сервер так и делает). То есть при запрос скрипта, веб-сервер не отдаст его как текстовый файл, а выполнит все инструкции пхп и потом вернёт только то, что пхп выведет. Например, всё, что заключено в <?php .... ?> будет скрыто, кроме того, что выводится функциями echo, print и подобными.

Вы не скинули файл register.php целиком, но подозреваю, что он весь внутри <?php тега, поэтому можно не переживать, что обратившийся к скрипту пользователь увидит параметры коннекта к базе.

По безопасности в целом — есть два подхода:
1) Сделать обычную регистрацию и авторизацию внутри Юнити приложения. Как я понимаю, у вас сейчас так и сделано. После регистрации Юнити получает токен и использует его для всех последующих запросов. Токен желательно делать протухающим со временем.
2) Сделать регистрацию и авторизацию на сайте, пройдя которую человек может получить доступ к странице, в которую встроено Юнити приложение. И при рендеринге приложения ему сразу же передаётся такой же токен для запросов, что и в пункте выше.

Вопрос лишь в том, хотите вы давать доступ в приложение только зареганным у вас на сайте людям или хотите распространять приложение самостоятельно, а сайт будет невидимым бэкендом для него.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы