首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-admin brite强制保护和更多

Django-admin brite强制保护和更多
EN

Stack Overflow用户
提问于 2016-03-31 12:09:04
回答 1查看 578关注 0票数 1

我知道这是一个关于SO的很好的主题,但是有人能告诉我有没有支持django版本1.8 +和python 3.4+的django-admin保护的第三方包。似乎我找到的所有内容都已经过时了,并且支持小于1.7的django版本和Python2.7。

此外,有人能解释一下我如何手动保护django-admin吗?在编写代码保护django-admin免受暴力破解攻击时,应该采取什么步骤?

EN

回答 1

Stack Overflow用户

发布于 2016-03-31 12:26:59

我使用两种方法:

身份验证后端缓存最后一次登录尝试,并拒绝过于频繁的尝试。

代码语言:javascript
复制
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.auth.backends import ModelBackend
from django.core.cache import cache
import datetime

class BruteForceProtectedAuthBackend(ModelBackend):
    def authenticate(self, username=None, password=None):
        now = datetime.datetime.now()
        last_login = cache.get(username + '-login-attempt', now - datetime.timedelta(days=1))
        cache.set(username + '-login-attempt', now)
        if (now - last_login) < datetime.timedelta(seconds=settings.AUTH_RATE):
            return None

        try:
            user = User.objects.get(username=username)
            if user.check_password(password):
                return user
            else:
                return None
        except User.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

中间件拒绝来自非本地IP地址的对管理urls的请求。

代码语言:javascript
复制
from django.http import HttpResponseForbidden
from django.conf import settings
from ipware.ip import get_ip

class ProtectAdminSiteMiddleware(object):
    def process_request(self, request):
        if request.path.startswith(reverse('admin:index')):
            remote_addr = get_ip(request)
            if remote_addr is None:
                return HttpResponseForbidden('Forbiden')
            else:
                if not remote_addr in settings.INTERNAL_IPS:
                    return HttpResponseForbidden('Forbiden')
        return None
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36323983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档