iOS безопасность отправки данных с паролем на сервер и с сервера

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

  1. Пользователь имеет текстовый пароль на своем телефоне, который также находится на сервере как двоичный код bcrypt.
  2. пользователь хочет получить что-то из базы данных, поэтому пользователь отправляет свой идентификатор и пароль на сервер через (в настоящее время обычный текст).

    NSString *url = [NSString stringWithFormat:@"%@f=getUserInfo&ID=%@&password=%@",[[Globals global] operationServerName], self.ID, self.password]; NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]]; 
  3. сервер хэширует пароль, полученный от пользователя, и извлекает уже хешированный пароль с сервера и делает сравнение, если они совпадают, он получает что-то из базы данных

Проблема в том, что идентификатор и пароль отправляются на сервер по простому тексту, и я понятия не имею, что делать или внедрять, чтобы защитить его, чтобы он избегал атак подслушивания. я абсолютно не знаю, что делать, но я слышал, что ssl / tls поможет, если кто-нибудь сможет на начальном уровне объяснить мне, как исправить проблему или указать мне в правильном направлении, я ДЕЙСТВИТЕЛЬНО оценил бы это! Любые советы или пояснения о том, как улучшить это, были бы замечательными! Я совершенно не знаю.

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

Вам необходимо отправить данные через HTTPS- соединения вместо HTTP. Таким образом, поток данных между клиентом и сервером будет зашифрован.

Вам необходимо установить SSL-сертификат на свой сервер. (Если вы не знаете об установке, просто попросите своего хост-провайдера сделать это). Теперь вместо того, чтобы возвращать ссылку http в вашем глобальном методе [[Globals global] operationServerName] вернуть HTTPS ( https://example.com )

Это должно позаботиться о шифровании потока данных между сервером и клиентом.

Ссылка: http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x64.html