是否可以只接受来 self 的应用程序的请求?举例来说,我有一个名为“Best App”的 iOS 应用程序,它使用 Django 作为后端。我怎样才能做到只接受来自 Best App 的请求,而拒绝其他所有请求?
我正在考虑检查请求中的“HTTP_USER_AGENT”键,如果 HTTP_USER_AGENT 是“最佳应用”,我将允许请求通过。但我最近发现,任何人都可以从 Chrome 等应用程序修改他们的 USER_AGENT 并发出访问我们资源的请求。
有没有其他方法可以限制对我的特定应用程序的访问?我想通过授予白名单访问权限向其他开发人员开放我的后端服务。但就目前而言,我想保持对我们后端的私有(private)访问。
非常感谢您对此事的建议和见解。
最佳答案
好的应用程序安全解决方案非常重要。您不能使用任何简单的纯文本对象,如 HTTP_USER_AGENT。一种常见的方法是“API key ”——从注册页面获得的 key 与请求一起提供,但除非您将它与其他一些“ secret ”结合起来,否则它可以被简单地复制并由“假”提供应用程序。
一个相当强大的解决方案是使用共享 secret 的某种形式的质询/响应。理论上,坚定的攻击者可以从您的应用程序中提取您的 secret 并使用它,但这需要相当多的努力——首先他们需要解密您的应用程序包,然后提取 secret 。流程就像-
- 应用向网络服务发送请求进行身份验证,提供 API key 。
- Web 服务查找 API key 以确定“共享 secret ”
- Web 服务将质询字符串发送回应用
- 应用程序使用共享 key 对挑战字符串进行哈希处理并将其发送回网络服务
- Web 服务应用相同的散列并比较答案
- 如果哈希比较,网络服务返回 session key 给应用
- 应用随所有后续请求发送 session key
- 在某些时候您需要使 session key 无效 - 应用注销、超时、请求数
要保护此方法免受中间人攻击,您需要通过 SSL 运行它并确保您的应用验证服务器证书。
您还应该实现某种形式的保护以防止暴力尝试,例如在“x”次挑战失败后锁定 API key
关于ios - Django:只接受来 self 的应用程序的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750014/