Как безопасно отправить личные данные через веб-сокет клиенту Objective-C и обратно на сервер?

Я делаю wss:// подключение к трещотка (библиотека сокетов PHP) с использованием SocketRocket (библиотека сокетов Objective-c).

Я планирую отправить личные данные через это сокет-соединение, а затем отправить данные обратно на сервер с https:// запрос.


Код объекта-c:

//initiate global variable
@property (nonatomic) NSMutableArray* keys;

...

//receive the private data with SocketRocket
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(nonnull NSString *)string
{
[_keys insertObject:string];
}

...

//$_POST the file data with sthttp
STHTTPRequest *r = [STHTTPRequest requestWithURLString:@"https://example.com/test.php"];
r.POSTDictionary = @{ @"key":_keys[0] };
...

Есть ли какой-нибудь возможный способ, которым клиент может перехватить эти личные данные (в пределах причины [переполнение буфера, человек посередине и т. Д …])?

5

Решение

Если вы используете протоколы wss: // и https: //, вам не нужно беспокоиться о человеке в средней атаке, так как все отправляемые данные в любом случае зашифрованы.

Однако, если при каких-либо обстоятельствах вам необходимо отправить данные по небезопасному протоколу или строке запроса URL-адреса, вы можете зашифровать данные самостоятельно, используя открытый SSL-модуль PHP, и отправить их в виде открытого текста (например, $ _ GET params).

Пример:
http://php.net/manual/en/book.openssl.php#91210

В этом примере $crypttext будут двоичные данные. Это может быть закодировано в строку base64 и закодирован URL, если вам нужно отправить его через запрос GET или POST.

urlencode(base64_encode($crypttext))

На принимающей стороне вы можете декодировать base64 и url-декодирование, чтобы получить двоичную информацию, а затем расшифровать данные, используя закрытый ключ, как показано в примере.

base64_decode(urldecode($crypttext)

2

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

Я бы порекомендовал, чтобы все ваши сертификаты были обновлены и чтобы ваш сертификат закрытого ключа был защищен и не был доступен никому, кроме вас.

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

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

1

Примечание: вы захотите использовать протоколы TLS + с шифрованием sha256 + с защищенными шифрами.

Примечание. Протокол SSL + небезопасен и может быть восприимчивым к человеку посредине.
Замечания:
1. Убедитесь, что вы создали сертификат с sha256 +
2. Имейте сертификат, подписанный.
3. Настройте Apache или веб-сервер для использования SSL с комплектами шифрования TLS и Secure.
4. Убедитесь, что каждый хост доверяет ssl других хостов. (Если два пути)

Извините, что так обычно, но нужно больше информации.

С Уважением,
Wesley

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector