<div class="question"><p>В моем приложении для iphone в настоящее время я использую AFHTTPRequestOperationManager для отправки запросов на мой сервер и получения данных.</p>
<p>Но я заметил, что некоторые пользователи моего приложения взломали этот пост-запрос и изменили значения почтовых запросов, чтобы увеличить свои монеты в приложении.</p>
<p>Так что я хочу сделать все эти почтовые запросы зашифрованными / https (я даже не знаю термин). Я хочу, чтобы эти почтовые запросы не редактировались пользователями.</p>
<p>Есть ли способ сделать это с AFNetworking? Мне нужен пример почтового запроса и PHP-пример чтения этого запроса. Я искал в Google, но не мог найти ничего легкого для понимания. ниже приведен шаблон HTTP-запроса, который я сейчас использую. Пожалуйста, дайте подробный ответ, я не эксперт по AFNetworking или PHP.</p>
<pre><code>NSString *url = [NSString stringWithFormat:@"%@getlist-s.php", [Globals getSiteUrl]];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
NSDictionary *params = @{@"user_id": [Globals loggedInUser].Id,
@"action": @"get_list",
@"offset": [NSString stringWithFormat:@"%d", offset]
};
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ %@", error, operation.responseString);
}];
</code></pre><!—noindex—><br><!—/noindex—>
<div class="rating">3</div><div class="tags">afnetworkingiosobjective-cphp</div></div><h2 class="newh2">Решение</h2>
<div class="bestanswer" itemscope itemtype="http://schema.org/Answer" itemprop="acceptedAnswer"><p>Вы можете просто перенастроить свой веб-сервер для использования HTTPS вместо HTTP.
Это использует порт 443 вместо 80 и требует SSL-сертификат. К счастью, ты не <em>иметь</em> чтобы заплатить за них больше, вы можете получить один бесплатно через LetsEncrypt. Я бы рекомендовал отключить конечную точку HTTP, чтобы пользователи не могли продолжать использовать старую версию.</p>
<p>Затем вы можете обновить свой код, чтобы все конечные точки были HTTPS вместо HTTP.</p>
<p>HTTPS шифрует не только содержимое запросов и ответов, но также что-либо в URL-адресе после доменного имени, что делает человека в середине атаки гораздо более сложным. Тем не менее, это не надежный подход, так как пользователь все еще может MITM своего собственного устройства со своим корневым сертификатом, но то, как они будут делать это, выходит за рамки этого ответа.</p>
<p>Другим уровнем безопасности будет использование HMAC (код аутентификации сообщений на основе хеша). </p>
<p>Приложение сгенерирует его, взяв параметры запроса и общий секрет и хэшируя их, используя алгоритм защищенного хеширования и добавляя его в качестве дополнительного параметра к запросу.
Сервер может проверить его правильность (и запрос является подлинным), взяв предоставленные параметры, используя один и тот же общий секрет, хэшируя их точно таким же образом и проверив, что поставляемый HMAC и тот, который он только что сгенерировал, совпадают.</p>
<p>Важно убедиться, что ваш общий секрет остается секретным между приложением и вашим сервером и НИКОГДА не передается между ними. Если вы хотите проявить смекалку, вы можете сгенерировать общий секрет на лету на основе определенных общих параметров, но это может стать сложным, подверженным ошибкам и повлиять на законных пользователей.</p>
<p>Это игра в кошки-мышки, ничто не идеально, и если кто-то <em>действительно</em> хочет обмануть систему, тогда они будут, но это должно сдерживать большинство случайных злоумышленников.</p>
<div class="best_rating">0</div></div><h2 class="newh2">Другие решения</h2>
<p>Других решений пока нет …</p>
<div class="source"><a href="https://stackoverflow.com/questions/31490283/afnetworking-make-post-requests-via-https">Источник</a></div>