我们在Django拥有自己的解决方案,我们正在使用DRF& JWT用于为我们的Android应用程序生成API(以便创建的API会到达我们的服务器,并且django代码可以在其上运行,然后执行必要的CRUD操作)。
现在,我们计划让我们的APi成为第三方用户使用的选项,以便他们的解决方案可以直接访问我们的API。
我们需要知道API是否受到我们自己的Android应用或javascript代码的攻击,或者是否受到第三方代码的攻击(我们需要计算第三方点击我们的API的次数) 。 反正我们可以解决这个问题吗?
如果我们要为第三方提供单独的API并为我们自己的用途提供单独的API,那么使用javascript,可以轻松阅读我们的内部API并滥用它们(即,使用我们的第三方内部api点击我们的服务器码)。
让我们从正确的方向开始的任何通用帮助,以便我们可以阅读和学习将有所帮助。
答案 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