【问题标题】:Best practices for throttling a web-application?限制 Web 应用程序的最佳实践?
【发布时间】:2011-05-05 03:53:15
【问题描述】:

在我的网站上,出于各种原因,我需要限制用户请求:

  • 防止过度查询数据库或第 3 方 api
  • 防止垃圾邮件
  • 防止他人窃取我的数据

我想知道节流的最佳做法是什么?应该在脚本级别(PHP/MySQL)还是在服务器级别(Apache)完成?

关于节流,我应该牢记哪些具体的最佳实践?

【问题讨论】:

标签: php security apache web-applications throttling


【解决方案1】:

理想情况下,这应该在网络/防火墙级别或至少在 Apache 上完成。

PHP 节流也是可能的,但只有在您想拒绝对资源的访问而不只是延迟时才应该这样做。有关更多详细信息,请参阅我在类似问题中给出的这个答案(和 cmets):

【讨论】:

  • @babonk:因为在 PHP 级别,您正在消耗更多的资源(CPU、RAM、分配的客户端),这有点违背了节流试图解决的目的。
  • 在网络/防火墙级别实施节流的任何好的示例?
  • @Antony:这对于 ServerFault 来说可能是一个很好的问题。
【解决方案2】:

在我的脑海中,有几个你可能想要考虑使用:

1) 您可以使用 JavaScript 创建设置标志的间隔,以便您可以检查标志以确保它们不会在间隔期内请求。

2) 您可以使用 PHP 并将他们的请求时间存储在您正在运行的会话中,并对其进行检查,这样他们就不会过于频繁地发出请求。

3) 您可以使用 MySQL 记录他们最后一次访问的时间,并查看是否应该允许他们使用该资源。

一般这些方法分为客户端和服务器端。部署您觉得最舒服且对自己最方便的任何一个。

并非所有部署都允许您修改 Apache 服务器配置 :)

希望对您有所帮助。干杯!

【讨论】:

  • MySQL(或任何其他 RDBMS)可能不是各种限制的最佳选择(请参阅我在答案中发布的链接)。
  • 确实如此。感谢您的提醒:)
猜你喜欢
  • 2011-02-18
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2011-02-16
  • 2011-05-19
  • 2010-09-14
  • 1970-01-01
相关资源
最近更新 更多