@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');
  • Вопрос задан
  • 273 просмотра
Решения вопроса 1
Если злоумушленник, декомпилировав игру получит прямые ссылки к скриптам PHP, может ли он в теории чего нибудь натворить плохого?

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:20
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект