AFNetworking通过HTTPS发布帖子请求

时间:2015-07-18 10:36:42

标签: php ios objective-c afnetworking

在我的iphone应用程序中,目前我正在使用AFHTTPRequestOperationManager将发布请求发送到我的服务器并获取数据。

但是我注意到我的一些应用用户已经破解了这些帖子请求并更改了帖子请求的值以增加他们在应用中的硬币。

所以我想把这些整个帖子请求加密/ https(我甚至不知道这个术语)。我希望这些帖子请求不被用户编辑。

有没有办法用AFNetworking做到这一点?我需要一个post请求的示例和读取该请求的PHP示例。我搜索谷歌但找不到任何容易理解的东西。下面是我目前使用的HTTP请求的模板。请详细解答,我不是AFNetworking或PHP的专家。

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);

        }];

1 个答案:

答案 0 :(得分:0)

您只需重新配置您的网络服务器即可使用HTTPS而非HTTP。 这使用端口443而不是80并且需要SSL证书。幸运的是,你不能再支付这些费用,你可以通过LetsEncrypt免费获得一个。我建议关闭HTTP端点,以便用户无法继续使用旧版本。

然后,您可以更新代码,以便所有端点都是HTTPS而不是HTTP。

HTTPS不仅会对请求和响应的内容进行加密,而且还会在域名制作人员中间攻击后更难以加密URL中的任何内容。也就是说,这不是万无一失的方法,因为用户仍然可以使用他们自己的根证书来使用自己的设备进行MITM,但是他们如何做到这一点超出了这个答案的范围。

另一层安全性是使用HMAC(基于哈希的消息认证码)。

应用程序将通过获取请求参数和共享密钥并使用安全散列算法对其进行散列并将其作为附加参数添加到请求来生成一个。 服务器可以通过获取提供的参数,使用相同的共享密钥,以完全相同的方式对它们进行散列并检查提供的HMAC及其刚生成的HMAC来验证它是否正确(并且请求是可信的)是一样的。

确保您的共享密钥在应用程序和服务器之间保密,并且永远不会在两者之间传输,这一点非常重要。如果您想要聪明一点,您可以根据某些常见参数动态生成共享密钥,但这可能会变得复杂,容易出错并影响合法用户。

这是一场猫捉老鼠游戏,没有什么是完美的,如果某人真的想要欺骗系统,那么他们就会这样做,但这会阻止大多数偶然的攻击者。