Django:如何对来自同一IP或用户的POSTS进行速率限制?

时间:2010-11-26 15:25:32

标签: django webserver

是否有内置方式或某些应用程序在Django中执行此操作?

例如,限制用户每小时发布的评论数量?有什么东西可以保护我的网站不受大量POST的侵害?

4 个答案:

答案 0 :(得分:1)

解决这个问题的一些方法 -

  1. 网络服务器有modules跟踪每个IP的请求,你可以设置一个限制,说明如果来自特定IP的请求超过限制,则停止服务请求一段预定义的时间段(aka黑名单)
  2. 你可以更加温柔而不是阻挡。显示CAPTCHA。
  3. 因此,在Django进入画面之前,这个决策基本上应该得到妥善处理。

答案 1 :(得分:0)

您使用的是django.contrib.comments等现有框架,还是使用了自制评论?

如果您使用contrib.comments,则可以在接收信号comment_will_be_posted(http://docs.djangoproject.com/en/1.2/ref/contrib/comments/signals/#comment-will-be-posted)上删除评论发布。

如果您不知道如何在django中使用信号框架,请阅读以下链接:“docs djangoproject com” - > “包括其他电池” - > “信号”(对不起这样的解释,我不能发布多个链接)。

答案 2 :(得分:0)

尝试ReCaptcha以防止洪水或垃圾邮件

答案 3 :(得分:-3)

您使用的是现有框架吗? (即Joomla,Drupal,Wordpress)。这些平台可能有插件或扩展,可以做你想要的。

有几种方法可以完成POST保护。

1。)每当有人提交表格时,请在他们的计算机上存储一个包含POST日期和时间的cookie。然后在每个帖子上检查是否存在该cookie以及他们上次发布的时间。根据时间范围拒绝或接受帖子。

2.。)创建一个DB表,用于存储POST数据,提交者的IP地址以及提交日期。在每个POST上,首先检查数据库中指定日期范围内的相同IP地址。拒绝或接受帖子。

3.。)您可以随时集成Captcha,因为大多数垃圾邮件发送者使用自动脚本发布到表单。

Swhistle Soft