c # — Является ли SSL единственным способом обмена информацией с удаленного веб-сервера?

Я являюсь частью команды разработчиков инди-игр, и мы работаем над проектом в Unity (C #).
Я использовал Drupal на бэкэнде (PHP / MySQL) и хочу извлечь данные из базы данных в наше программное обеспечение.

Так, например, если я хочу, чтобы пользователь вошел в систему с помощью аутентификации Drupal (хеширование отправленных паролей на стороне сервера), пользователь должен сначала ввести свое имя пользователя и пароль через единство WWWForm или c # HttpRequest (клиент).

Если я правильно провел исследование, есть три способа безопасной отправки данных (исправьте меня, если я ошибаюсь):

  1. Реализация собственного шифрования / дешифрования пароля (используйте хеширование пароля Drupal после дешифрования на стороне сервера)
  2. Реализовать методы хеширования drupal в c # (клиент)
  3. Купи SSL сертификат и иди с HTTPS

Можно перехватить HTTP-соединение или декомпилировать программное обеспечение, верно? Имеют ли смысл 1) и 2) смысл тогда? Будет ли один из двух методов достаточно безопасным?

Является ли SSL единственным путем для нас?

0

Решение

Это зависит от того, насколько безопасны вы, и насколько вы полагаете, что злоумышленник может перехватить пароль. Например, если вы используете хеширование пароля на стороне клиента через JavaScript, теоретически библиотека JavaScript может быть перехвачена во время ее перемещения к пользователю и изменена таким образом, чтобы она отправляла копию пароля в незашифрованном виде. Это может быть перехвачено при отправке на ваш сервер. Но, поскольку вы работаете над компьютерной игрой, это вряд ли произойдет.

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

SSL-сертификаты с самой низкой степенью безопасности теперь очень недороги и, в целом, избавят вас от необходимости много думать о том, как реализовать безопасность. Я бы просто пошел с этим вариантом.

1

Другие решения

  1. Реализация собственного шифрования / дешифрования пароля (используйте пароль Drupal
    хеширование после расшифровки на стороне сервера)
  2. Реализовать хэширование drupal
    метод (ы) в c # (клиент)

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

  1. Купи SSL сертификат и иди с HTTPS

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

2

По вопросам рекламы [email protected]