ios - 如何防止未经授权的 HTTP 请求?

标签 ios http authorization

我的 iOS 应用程序中有一些这样的代码:

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('email') 获取此信息并创建一个帐户,而不进行任何检查或任何操作。然而,似乎任何人都可以轻松运行上面的代码(我的意思是你需要做的就是复制上面的代码并将其放入你自己的应用程序中,对吧?),他们只需要知道服务器地址,他们可以将他们想要的任何数据附加到请求中,服务器将继续为他们创建一个帐户。

我如何授权请求以了解它们来 self 的应用程序并且仅来 self 的应用程序?这是一个普遍的问题吗?其他产品如何防止这种情况发生?

最佳答案

首先,免责声明。我当然不是 不是 网络专家,也不是安全专家。事实上,我回答的唯一原因是因为 stackmonster 回复中的讨论。

但是,我确实知道拦截 SSL 连接非常容易,尤其是当用户是同谋时。

不过,总的来说,我认为以下内容会有一些好处。

您必须确定要保护的对象/对象。如果你只是想保护应用程序和服务器之间通信中的数据,那么https就可以了。外部监听将与监听其他 SSL 流量一样有效(或无效)。

但是,如果您试图保护您的 API(您的问题似乎暗示了这一点),那么用户查看您发送的命令是微不足道的(正如您自己通过使用 Charles 发现的那样)。

那么,你想阻止任何人知道你的 API 的细节吗?您是只想防止 DOS 攻击,还是只让有效用户发出命令,还是什么?

然后您可以担心身份验证和授权(两个不同的主题)。也许验证请求来自已知实体就足够了。

无论如何,提供指导非常困难,因为您首先必须决定您的网络隐私目标是什么。

然后,如果它们很高大上,那么您就需要大量阅读。

不过,在某些时候,您必须决定什么对您的应用/业务至关重要,什么不是。就像任何好的软件设计一样,然后创建一组需求。然后,按某种顺序对它们进行优先排序(例如,强制性的、必不可少的、拥有的很好、没有也可以生活)。

这会告诉您是否需要额外的安全措施,以及需要何种安全措施。

然而,大多数人发现,即使是锁上所有的门和 window (更不用说保护烟囱,在墙壁、地板和天花板上添加混凝土, build 安全室)也不值得花费时间和投资,并雇佣武装 guard )。

关于ios - 如何防止未经授权的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227399/

相关文章:

node.js - JSPM GitHub 凭据失败

ios - ReactiveCocoa 问题

http - 实际中空闲 HTTP 连接的理想超时长度

http - 在 Google App Engine 上对封闭主体的读取无效

java - Jaas tomcat "no security manager"

ruby-on-rails - 在操作中多次调用渲染和/或重定向

android - 使 ListView 可点击 React Native

ios - iPhone 5s Touch ID 传感器 API

ios - 隐藏和展开 UITableView 部分

Java HttpClient 似乎在缓存内容