【问题标题】:How to ban users from my Django app (with a twist)如何从我的 Django 应用程序中禁止用户(稍作改动)
【发布时间】:2016-02-08 00:14:57
【问题描述】:

我有一个基于 Web 的 Django 应用程序,用户可以在其中使用假名聚集在一起聊天。

大多数访问此网站的用户都是通过 Opera Mini 进行的。与简单的网络浏览器不同,Opera Mini 有一个twist,它通过a proxy server 获取所有内容,并将网页重新格式化为更适合小屏幕的格式。

我想在此应用中实现禁止功能。一些用户正在恐吓其他用户——如果我现在手动禁止他们,他们只会以新昵称返回。请注意,这些用户不是很精通技术 - 几乎所有用户都只是受过半教育。我的问题是这样的:

  1. 当用户使用 Opera Mini 等代理时,禁止用户 IP 是否有效?
  2. 是否有任何知名的 Django 插件可以优雅地处理 IP 阻塞?
  3. 如果 1 不成立(在这种情况下,2 也不成立),我是否可以采用其他可靠的方法来阻止敌对用户并保护我的社区?

目前,我为这些用户提供了“downvote”功能,将帖子收到过多downvote 的帐户设为静音。但这对火焰战争几乎没有帮助。施虐者不断以新的假名返回,破坏了整个社区。或许我应该试试hellbanning,如果没有其他方法?

注意:我不是高级程序员(更像是设计师),所以对于像我这样的人来说,我更喜欢快速上市的解决方案。

【问题讨论】:

  • 听起来是个有趣的社区
  • 安迪 - 感谢您的链接!克里斯 - 社区主要由刚开始体验互联网的人组成。他们主要来自乡村或城市郊区,最近采购了他们的第一台计算设备。

标签: python django proxy ip


【解决方案1】:

看看this section of the Opera Mini documentation。 Opera 服务器将向您发送一个 X-Forwarded-For 标头,其中包含客户端的原始 IP,您可以在 Django 中使用 request.META['HTTP_X_FORWARDED_FOR'] 访问它。

也就是说,需要记住一些事情(我在 Opera Mini 拥有最大网络浏览器市场份额的国家生活和建立网站):

  • 听起来您的许多用户都是通过手机连接的。这意味着他们极有可能拥有动态 IP 地址。他们的 IP 可能会经常更改,如果您现在禁止一个 IP,它可能最终会在几分钟/几小时后阻止其他用户的访问。如果您确实禁止 IP,则建议设置一个相当短的超时时间。

  • X-Forwarded-For 标头是出了名的不可靠。它们通常包含内部 IP,您需要将其过滤掉。也不能保证您将获得正确的上游 IP(考虑用户在 VPN/Tor 节点/等后面的情况)。您还需要考虑在您的应用程序之前可能拥有的任何反向代理。

  • 真正想要滥用该系统的人会找到方法。基于节制和/或声誉的系统是将他们的噪音降至最低的唯一方法。

【讨论】:

  • solarissmoke:您对功能手机用户的 IP 阻止列表有什么经验吗?如果我确实实施了 IP 禁令,我试图确定它应该持续多长时间(10 分钟?60 分钟?)。这是一个主观问题,我想如果您在该领域有经验,您可以提供一些数据点。
  • 这真的取决于网络运营商以及他们重新分配 IP 的频率(我猜这是他们的 IP 池大小和客户端数量的函数),因此很难给出任何合理的数字。我认为实际上你需要在你的启发式中使用 IP 作为一个信号,但不应该只依赖 IP,否则你几乎肯定会阻止不应该被阻止的人。
猜你喜欢
  • 1970-01-01
  • 2019-02-06
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多