2010-12-07 153 views
2

我写了一个iPhone应用程序与服务器通信。应用程序向服务器发送消息并打印结果。如何知道消息是否从iPhone发送到服务器?

现在我有一个问题:有没有办法知道发送到服务器的消息是否来自iPhone?

我在问这是因为我想阻止攻击者从其他地方发送消息并淹没服务器。

回答

0

你可以做一些形式的认证,加密或指纹,例如。使用SHA,MD5等。这样你就可以让攻击者很难(但并非不可能)滥用你的服务器。

+0

需要用户注册才能使用该应用程序? – Robocide 2010-12-07 15:49:41

0

在您收到并检查服务器上的连接之前,您无法从iPhone中知道它。如果你这样做,你已经打开了由于连接耗尽而导致DOS(拒绝服务)攻击的可能性。

1

如果您使用应用程序内购买,那么会有一个完整的身份验证链来验证设备X购买了该应用程序。你是服务器可以跟踪这个,然后只给以前认证的设备的完整回应。

这种方法也使盗版应用程序几乎不在图片中。

这种方法不会阻止一致的DDOS攻击,但您的服务器至少可以忽略无效的客户端,从而显着减少其工作量。由于您的服务器在这里忽略了无效请求,因此它不会吸引潜在的非设备用户,并且非法用户可能只会在您不喜欢您时对其进行攻击,而不会让他们为您的免费Web服务陷入僵局。

如果您没有在应用程序购买中使用,您可以设置自己的身份验证过程并为设备提供令牌,并让服务器记住所述令牌,然后以后只会为具有所述请求的请求提供有效响应令牌(适当地散列和腌制)。这种方法不会阻止盗版应用程序使用您的服务,但会有效地阻止非设备使用您的Web服务(再次,除了一致的黑客攻击之外)。

更简单的方法是使用混淆的请求格式,这需要采取协调一致的工作来进行反向工程。

在所有这些方法中,您可能必须监视您的服务器以发现异常活动,然后采取适当的措施。

我鼓励您将您的努力与预期风险相匹配。您可以花几天,几个月甚至几年时间,正确保护应用程序,确保成本是值得的。

相关问题