[英]AFNetworking make post requests via HTTPS
在我的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);
}];
您只需重新配置您的Web服務器即可使用HTTPS而不是HTTP。 這使用端口443而不是80並且需要SSL證書。 幸運的是,你不必支付這些了,你就可以用LetsEncrypt一個免費的。 我建議關閉HTTP端點,以便用戶無法繼續使用舊版本。
然后,您可以更新代碼,以便所有端點都是HTTPS而不是HTTP。
HTTPS不僅會對請求和響應的內容進行加密,還會對域名制作人員在中間攻擊后的URL中的任何內容進行加密。 也就是說,這不是一個萬無一失的方法,因為用戶仍然可以使用他們自己的根證書MITM他們自己的設備,但他們如何去做這個超出了這個答案的范圍。
另一層安全性是使用HMAC(基於哈希的消息認證碼)。
應用程序將通過獲取請求參數和共享密鑰並使用安全散列算法對其進行散列並將其作為附加參數添加到請求來生成一個。 服務器可以通過獲取提供的參數,使用相同的共享密鑰,以完全相同的方式對它們進行散列並檢查提供的HMAC和它剛剛生成的HMID是否相同來驗證它是否正確(並且請求是可信的)。
確保您的共享密鑰在應用程序和服務器之間保密,並且絕不在兩者之間傳輸,這一點很重要。 如果您想要聰明一點,您可以根據某些常見參數動態生成共享密鑰,但這可能會變得復雜,容易出錯並影響合法用戶。
這是一場貓捉老鼠的游戲,沒有什么是完美的,如果有人真的想欺騙系統,那么他們會,但這應該阻止大多數偶然的攻擊者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.