Я являюсь частью команды разработчиков инди-игр, и мы работаем над проектом в Unity (C #).
Я использовал Drupal на бэкэнде (PHP / MySQL) и хочу извлечь данные из базы данных в наше программное обеспечение.
Так, например, если я хочу, чтобы пользователь вошел в систему с помощью аутентификации Drupal (хеширование отправленных паролей на стороне сервера), пользователь должен сначала ввести свое имя пользователя и пароль через единство WWWForm или c # HttpRequest (клиент).
Если я правильно провел исследование, есть три способа безопасной отправки данных (исправьте меня, если я ошибаюсь):
Можно перехватить HTTP-соединение или декомпилировать программное обеспечение, верно? Имеют ли смысл 1) и 2) смысл тогда? Будет ли один из двух методов достаточно безопасным?
Является ли SSL единственным путем для нас?
Это зависит от того, насколько безопасны вы, и насколько вы полагаете, что злоумышленник может перехватить пароль. Например, если вы используете хеширование пароля на стороне клиента через JavaScript, теоретически библиотека JavaScript может быть перехвачена во время ее перемещения к пользователю и изменена таким образом, чтобы она отправляла копию пароля в незашифрованном виде. Это может быть перехвачено при отправке на ваш сервер. Но, поскольку вы работаете над компьютерной игрой, это вряд ли произойдет.
SSL с подлинным сертификатом может помочь предотвратить это, поскольку теоретически невозможно, чтобы атака MITM (человека посередине) обнюхивала, не говоря уже о том, чтобы модифицировать данные при их передаче по проводам. Для этого им потребуется копия вашего личного серверного ключа, либо путем кражи его с вашего сервера, либо путем кражи / получения его от центра сертификации. Хотя это не невозможно, это вряд ли произойдет.
SSL-сертификаты с самой низкой степенью безопасности теперь очень недороги и, в целом, избавят вас от необходимости много думать о том, как реализовать безопасность. Я бы просто пошел с этим вариантом.
- Реализация собственного шифрования / дешифрования пароля (используйте пароль Drupal
хеширование после расшифровки на стороне сервера)- Реализовать хэширование drupal
метод (ы) в c # (клиент)
Проблема этих методов заключается в том, что хешированная версия на стороне клиента становится паролем. Поэтому, если MITM получает хешированную версию, он может просто воспроизвести ее, чтобы войти в систему.
- Купи SSL сертификат и иди с HTTPS
Определенно. Наряду с шифрованием HTTPS обеспечивает гарантию того, что клиент общается с вашим сервером, и это не было MITM, а также защитит от атак повторного воспроизведения (злоумышленник, воссоздающий запрос входа в систему из своего собственного соединения и затем действующий в ответе) ).