iphone - 如何知道消息是否从 iPhone 发送到服务器?

标签 iphone objective-c

我编写了一个与服务器通信的 iPhone 应用程序。应用程序向服务器发送一条消息并打印结果。

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

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

最佳答案

如果您使用应用内购买,则会有一个完整的身份验证链来验证设备 X 购买了该应用。您的服务器可以跟踪这一点,然后只对之前经过身份验证的设备提供完整响应。

这种方法还可以将盗版应用程序排除在外。

这种方法无法阻止协同 DDOS 攻击,但您的服务器至少可以忽略无效客户端,从而显着减少其工作负载。由于您的服务器在这里忽略无效请求,这也使其对潜在的非设备用户的吸引力降低,非法用户可能只会在不喜欢您的情况下攻击您,而不是仅仅因为其免费网络服务而使您的服务器陷入困境。

如果您不在应用程序购买中使用,您可以设置自己的身份验证过程并向设备提供 token ,并让您的服务器记住所述 token ,然后只为具有所述 token 的请求提供有效响应(适当散列和加盐)。这种方法不会阻止盗版应用程序使用您的服务,但会有效地阻止非设备使用您的网络服务(同样,协调一致的黑客攻击除外)。

一种更简单的方法是采用混淆的请求格式,需要共同努力才能进行逆向工程。

在所有这些方法中,您可能必须监视服务器是否有异常事件,然后采取适当的步骤。

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

关于iphone - 如何知道消息是否从 iPhone 发送到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4377898/

相关文章:

iphone - 帮助在iPhone上实时更新声音

iphone - 我怎样才能制作中央凸起的标签栏项目?

iphone - 触摸外部时隐藏 UITableViewController 中的 UIPickerView

ios - 使用自定义对象保存 NSMutableArray 时出现问题

ios - Mainqueue 在 NSURLConnection 中使用时可以执行后台任务吗?

iphone - FMDB executeUpdate 不改变数据库

objective-c - Dropbox API - 使用 Dropbox 作为服务器

objective-c - 关于 NSDictionaryOfVariableBindings 将 objc 转换为 swift

objective-c - 在 swift 中创建依赖于另一个 objective-c pod 的 pod

iphone - 在核心数据后台填充期间处理应用程序终止