首页 文章

Django为第三方使用提供API

提问于
浏览
0

我们在Django中拥有自己的解决方案,我们正在使用DRF和JWT为我们的Android应用程序生成API(这样创建的API就会到达我们的服务器,django代码可以在其上运行,然后进行必要的CRUD操作) .

现在,我们计划让我们的APi成为第三方用户使用的选项,以便他们的解决方案可以直接访问我们的API .

我们需要知道API是否被我们自己的Android应用程序或javascript代码命中,或者是否受到第三方代码的攻击(我们需要计算第三方使用我们的API的次数) . 反正我们可以解决这个问题吗?

如果我们要为第三方提供单独的API并为我们自己的用法提供单独的API,那么使用javascript,可以轻松读取我们的内部API并滥用它们(即,使用我们的第三方代码中的内部api命中我们的服务器) .

任何让我们开始朝着正确方向前进的通用帮助,以便我们可以阅读和学习将有所帮助 .

1 回答

  • 0

    你应该研究Permissions(http://www.django-rest-framework.org/api-guide/permissions/)和Throttling(http://www.django-rest-framework.org/api-guide/throttling/) . 您可能想要阻止/限制某些用户代理,例如curl,android等 .

    from rest_framework import permissions
    
    class UserAgentBlacklist(permissions.BasePermission):
        message = 'Please set a custom user agent when using scripts with our API.'
    
        def has_permission(self, request, view):
            user_agent = request.META['HTTP_USER_AGENT']
            for agent in ['libcurl', 'Python-urllib', 'python-requests']:
                if user_agent.startswith(agent):
                    return False
            return True
    

相关问题