如何使用 wagtail 对 URL 路径进行速率限制?

问题描述 投票:0回答:1

我正在迁移现有的 django 项目以使用 wagtail CMS。

我不清楚如何使用 wagtail 进行速率限制,我在文档中没有看到任何相关内容。

举以下例子:

在集成 wagtail 之前,我有一个会返回隐私政策 html 页面的视图。这是使用 redis 进行速率限制的,您可以在下面看到方法装饰器和方法

@ratelimit(
    key='ip',
    rate='15/m',
    block=True
)
def show_privacy_policy(request):
    context = base_context(request)
    return render(
        request,
        'pages/privacy_policy.html',
        context
    )

现在它被删除了,我有一个更通用的 wagtail 页面,用于呈现条款和条件或隐私政策等页面,我称之为

InfoPage
。我唯一定义的是我的 InfoPage 模型,它附加了模板路径
wagtail/info_page.html

class InfoPage(Page):

    template = "wagtail/info_page.html"
    last_modified_date = models.DateField("Last modified date")
    body = RichTextField(features=['bold', 'italic', 'link', 'ul', 'h3'])

    content_panels = Page.content_panels + [
        FieldPanel('last_modified_date'),
        FieldPanel('body')
    ]
    
    parent_page_types = ['news.Index']
    subpage_types = []

这确实有效,并且我的所有信息页面都正确呈现。但是,我没有看到任何方法来限制对这些页面的访问。如果没有办法限制速率,我很容易受到 DDOS 攻击等。我在这里缺少什么?有没有办法限制访问速率或者我需要采取不同的方法?

python django redis wagtail rate-limiting
1个回答
0
投票

我建议使用前端缓存,而不是速率限制,这样提供渲染页面的服务就很便宜。我将 Cloudflare 与缓存失效器中的内置 在此处输入链接描述一起使用。库存 Wagtail 发行版中包含许多缓存失效器,或者您可以使用 CodeRed 中的 wagtail-cache

© www.soinside.com 2019 - 2024. All rights reserved.