heroku 如何限制Django应用的客户端IP?(通过Django和/或PaaS)

f0brbegy  于 2023-10-19  发布在  Go
关注(0)|答案(2)|浏览(117)

我正在制作一个Django应用程序,我希望通过确保只有来自一个IP(例如共享VPN)的客户端可以访问它来增强安全性并限制用户。我计划在数字海洋应用平台或Heroku等PaaS上托管应用程序。
如何通过以下方式限制客户端IP:

  1. Django,防止其他用户访问应用程序,以及
  2. PaaS,这样潜在的攻击者首先就无法访问平台?(希望一些PaaS有这个选项)
798qvoo8

798qvoo81#

我不确定选项2,但对于选项1,最好的方法是添加中间件,如果IP不被识别,它将拒绝访问。类似这样的东西应该可以工作:

class IPFilterMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        self.allowed_ips = settings.ALLOWED_IP_ADDRESSES

    def __call__(self, request):
        # Get the client's IP address from the request, this might not always be correct I believe, needs some testing
        client_ip = request.META.get('REMOTE_ADDR')

        if client_ip in self.allowed_ips:
            return self.get_response(request)
        else:
            return HttpResponseForbidden("Access Denied")

最后一步是在settings.py中添加中间件。

drkbr07n

drkbr07n2#

Django,防止其他用户访问应用程序
有一个称为django-iprestrict的库专门为它创建,您可以使用它。
PaaS,这样潜在的攻击者首先就无法访问平台?(希望一些PaaS有这个选项)
如果你可以远程访问服务器并且你使用的是apache,那么你可以启用apache authenticate,这将只允许那些拥有密码的人访问。您可以按照数字海洋文档here进行设置

相关问题