是否可以接受来自我的应用程序的请求?比方说,我有一个名为'Best App'的iOS应用程序,它使用Django作为其后端。我怎样才能使得只有来自Best App的请求被接受而其他一切被拒绝?
我正在考虑检查请求中的'HTTP_USER_AGENT'键,如果HTTP_USER_AGENT是'Best App',我将允许请求通过。但我最近发现,任何人都可以从Chrome等应用程序修改其USER_AGENT,并请求访问我们的资源。
我是否可以通过其他方式限制对我的特定应用程序的访问?我想通过提供白名单访问权限向其他开发人员开放我的后端服务。但就目前而言,我希望继续访问我们的后端私有。
非常感谢您对此事的建议和见解。
答案 0 :(得分:6)
良好的应用程序安全解决方案并非易事。您不能使用任何简单的纯文本对象,如HTTP_USER_AGENT。一种常见的方法是" API Key" - 从注册页面获得的密钥与请求一起提供,但除非您将其与其他一些秘密"它可以通过" false"进行简单的复制和提供。应用程序。
一个相当强大的解决方案是使用共享密钥的某种形式的质询/响应。理论上,确定的攻击者可以从您的应用中提取您的秘密并使用它,但这需要合理的努力 - 首先他们需要解密您的应用包然后提取秘密。流程类似于 -
要保护此方法免受中间人攻击,您需要通过SSL运行它,并确保您的应用验证服务器证书。
您还应该实施某种形式的防范暴力尝试,例如在' x'之后锁定API密钥。失败的挑战