首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在验证iPhone http请求

正在验证iPhone http请求
EN

Stack Overflow用户
提问于 2010-11-01 10:18:15
回答 2查看 123关注 0票数 1

我有一个iPhone游戏,我使用套索网页将分数添加到MySQL数据库中。它现在运行得很好,但我得到了一个‘用户’,提交了数百个不可思议的好成绩连续。我知道这不可能是“合法”的方式。我现在正在更新应用程序,希望避免这样的胡言乱语。我最初的想法是去游戏中心,我会去的,但这次更新几乎是完美的,所以我宁愿不再打开它。

如果HTTP请求来自我的应用程序,来自iOS设备,而不是来自某个机器人或脚本,那么什么是测试的好方法?

谢谢!哈纳安

这是我的请求代码:

代码语言:javascript
复制
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];
EN

回答 2

Stack Overflow用户

发布于 2010-11-01 10:31:16

你不能直接通过HTTPS来执行请求吗?如果使用NSMutableURLRequest很容易做到这一点(我不知道;我不是Cocoa开发人员),那么这可能是最简单、最直接的更改。如果他有一部越狱手机,并在内存中对分数进行了修改,那么无论如何你都完蛋了,但这应该可以阻止一个使用数据包嗅探器的人。它绝对不是完全安全的,我猜它可能容易受到重播攻击(也许我错了),但一次又一次地发布相同的分数可能不会给你带来太多收益,而且这不是我们谈论的银行数据。

票数 1
EN

Stack Overflow用户

发布于 2010-11-01 11:03:41

您可以自动生成一个post代码,它是一个唯一的数字,包括app_id + device_id,然后对其进行编码并附加到http请求中。然后简单地解码和检查邮编是合法的或不是在服务器上,然后保存在数据库中的分数。如果对所有数据(比分、游戏id、游戏名称、用户名……)进行编码,则会更安全。在发送到服务器之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4066295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档