验证iPhone HTTP请求
我有一个iPhone游戏,我用套索网页分数添加到MySQL数据库。 它现在工作正常,但我得到一个'用户',连续提交数百个不可能的好分数。我知道这不可能做到'合法'的方式。 我现在正在更新应用程序,并希望避免这样的废话。 我最初的想法是去Game Center,我会这样做,但这个更新几乎是完美的,所以我宁愿不再打开它。验证iPhone HTTP请求
什么是测试如果一个HTTP请求从我的应用程序来使用iOS deviced而不是从某些机器人或脚本的好办法?
谢谢! Hanaan
这是我的请求代码:
int gameTypeId = 1; // Nonograms=1, Nonograms iPad=2, LoopMaster=3
NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"player_name"];
NSString *place = [[NSUserDefaults standardUserDefaults] objectForKey:@"player_where_from"];
NSString *scoreString = [self formatFinalScore];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setValue: name forKey: @"name"];
[parameters setValue: place forKey: @"place"];
NSString *post1_encodestrings = [@"" stringByAppendingString: [parameters urlEncodedString]];
NSString *post1 = [NSString stringWithFormat: @"game_id=%d&game_size=%d&game_level=1&score=%f&score_string=%@&%@",gameTypeId,self.thisGameSize,self.gameFinalScore,scoreString,post1_encodestrings];
NSData *postData = [post1 dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init]autorelease]; //
[request setURL:[NSURL URLWithString:@"http://www.tmipublishing.com/hotcocoa/lasso/add_score_to_database.lasso"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];
你不能只是通过HTTPS执行,而不是要求?如果用NSMutableURLRequest
(我不知道;我不是可可开发者)很容易做到,那可能是最简单和最直接的改变。如果他有一部越狱手机,并且对内容进行了内存修改,那么无论如何你都会被搞砸,但它应该阻止一个拥有数据包嗅探器的人。这绝不是完全安全的,我想它可能容易受到重播攻击(也许我错了),但一次又一次地发布相同的分数可能不会获得多少收益,这不是银行数据,我们我正在谈论。
可以自动生成一个后置码是一个唯一的号码包括[APP_ID] + [DEVICE_ID]然后对其进行编码和追加到HTTP请求。然后在数据库中保存评分之前,解码并检查邮政编码是否合法。如果你在发送到服务器之前编码所有数据(分数,游戏ID,游戏名称,用户名......)会更安全。
DucN - 感谢你的答案 - 你会给我一个小指针,告诉我如何开始编码?我不知道。 – 2010-11-01 10:46:39
悦 - 我会考虑HTPPS,谢谢! – 2010-11-01 10:47:09