Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Django:只接受来自我的应用程序的请求_Ios_Django_Security - Fatal编程技术网

Ios Django:只接受来自我的应用程序的请求

Ios Django:只接受来自我的应用程序的请求,ios,django,security,Ios,Django,Security,是否可以只接受来自我的申请的请求?比如说,我有一个名为“Best app”的iOS应用程序,它使用Django作为后端。我如何才能做到只接受来自Best App的请求,而拒绝其他所有请求 我正在考虑检查请求中的“HTTP_USER_AGENT”键,如果HTTP_USER_AGENT是“最佳应用”,我将允许请求通过。但我最近发现,任何人都可以从Chrome等应用程序中修改他们的用户代理,并请求访问我们的资源 有没有其他方法可以限制对特定应用程序的访问?我想通过提供白名单访问权限向其他开发人员开放我

是否可以只接受来自我的申请的请求?比如说,我有一个名为“Best app”的iOS应用程序,它使用Django作为后端。我如何才能做到只接受来自Best App的请求,而拒绝其他所有请求

我正在考虑检查请求中的“HTTP_USER_AGENT”键,如果HTTP_USER_AGENT是“最佳应用”,我将允许请求通过。但我最近发现,任何人都可以从Chrome等应用程序中修改他们的用户代理,并请求访问我们的资源

有没有其他方法可以限制对特定应用程序的访问?我想通过提供白名单访问权限向其他开发人员开放我的后端服务。但现在,我想保持对我们后端的访问是私有的


非常感谢您对这一问题的建议和见解。

好的应用程序安全解决方案是非常重要的。您不能使用任何简单的纯文本对象,如HTTP\U USER\U代理。一种常见的方法是“API密钥”——从注册页面获得的密钥随请求一起提供,但除非您将其与其他“秘密”结合起来,否则“假”应用程序很容易复制和提供该密钥

一个相当强大的解决方案是使用共享秘密进行某种形式的挑战/响应。理论上,坚定的攻击者可以从你的应用程序中提取并使用你的秘密,但这需要付出合理的努力——首先他们需要解密你的应用程序包,然后提取秘密。这种流动有点像-

  • 应用程序向web服务发送认证请求,并提供API密钥
  • Web服务查找API密钥以确定“共享机密”
  • Web服务将质询字符串发送回应用程序
  • 应用程序使用共享机密哈希挑战字符串,并将其发送回web服务
  • Web服务应用相同的哈希并比较答案
  • 若比较哈希值,web服务将会话密钥返回给应用程序
  • 应用程序发送会话密钥和所有后续请求
  • 在某些时候,您需要使会话密钥无效-应用程序注销、超时、请求数
  • 为了防止中间人攻击,您需要通过SSL运行该方法,并确保您的应用程序验证服务器证书


    您还应该实施某种形式的防止暴力尝试的保护,例如在“x”挑战失败后锁定API密钥

    您是否建议我为其类型的场景实施OAuth 2.0?您可以使用OAuth对用户进行身份验证并授予他们访问API的权限,但is无法控制他们是在使用你的应用程序还是其他方法。你可以使用OAuth来验证你的应用程序的身份,但实际上你的应用程序中有用户名和密码,所以我认为这不是最好的方法