Django为第三方使用提供API

时间:2017-08-07 07:29:01

标签: android django rest api django-rest-framework

我们在Django拥有自己的解决方案,我们正在使用DRF& JWT用于为我们的Android应用程序生成API(以便创建的API会到达我们的服务器,并且django代码可以在其上运行,然后执行必要的CRUD操作)。

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

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

如果我们要为第三方提供单独的API并为我们自己的用途提供单独的API,那么使用javascript,可以轻松阅读我们的内部API并滥用它们(即,使用我们的第三方内部api点击我们的服务器码)。

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

1 个答案:

答案 0 :(得分:0)

您应该查看权限(http://www.django-rest-framework.org/api-guide/permissions/)和限制(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