我在我的iOS应用程序像这样的代码:如何防止未经授权的HTTP请求?
URL *url = [NSURL URLWithString:@"http://urltomyapp.com/createaccount"];
ASIFormDataRequest *createAccountRequest = [ASIFormDataRequest requestWithURL:url];
[createAccountRequest setPostValue:email forKey:@"email"];
[createAccountRequest setPostValue:password forKey:@"password"];
[createAccountRequest startAsynchronous];
在我的服务器上执行,我简单地采取通过self.request.get(“电子邮件”)此信息,并创建一个帐户,没有做任何检查或任何东西。然而,似乎任何人都可以轻松地运行上面的代码(我的意思是你需要做的就是复制上面的代码并把它放到你自己的应用程序中,对吗?),所有他们需要知道的是服务器地址,他们可以将他们想要的任何数据附加到请求中,服务器将继续为它们创建一个帐户。
我该如何授权请求才能知道他们来自我的应用程序和我的应用程序?这是一个普遍的问题吗?其他产品如何防止这种情况发生?
我不想过度安全或偏执。我认为我不理解的是(作为一个例子):我在我的服务器“createaccount”中有一个url,它需要发送两个参数与请求:电子邮件和密码。这个脚本不需要任何身份验证(我的意思是我可以在这里进行身份验证),所以似乎任何一个(无论如何都没有理由)可以通过10,000次迭代发送一个for循环,向这个url发送请求并创建10,000用户帐户。也许这不会经常发生,但是什么阻止了它的发生?我不应该为此担心吗? – Snowman
你应该担心吗?只有它很重要。在这种情况下,您将不得不采用某种类型的服务器端措施来检测/防止您不需要的行为。如果您的服务器端口向互联网开放,任何人都可以向您发送他们想要的任何内容。如果标准服务器不够用,则必须采用服务器端措施。最后,如果有人决心滥用你的服务器,那么防御时间和金钱都会花费你很多。我想大多数人都选择把门锁上,然后等待看看他们是否需要做更多的事情。 –