3

我有一个动态 php 页面,它将用户选择的 pol 选项更新为 DB。有时我的 Apache 服务器仅通过调用此页面而超载(意味着有人正在使用脚本循环调用它)你能帮我防止这种情况吗?

我计划这样做:

  1. 对于内存缓存中的每个请求,我都会保留 no of request 作为计数器(键:md5(用户 Ip),值:计数器)
  2. 如果计数器在 10 秒内超过 10,我将阻止该用户。

但是将 IP 保留为密钥是行不通的,因为许多组织对其所有员工系统都使用单个互联网 IP。

4

2 回答 2

1

与大多数民意调查一样,您需要一种方法来确保用户只能投票一次。有几种方法可以确保只投一票。

  • 需要注册用户(最安全最安全)
  • 每个 IP 一票(多个用户在同一 IP 上的问题)
  • 每个 IP 每 xx 分钟一票(更好地防止超载,但不是假票)
  • 防止自动提交的验证码(我喜欢这个,http://www.webappers.com/2011/03/03/a-draggable-jquery-captcha-system-with-jquery-ui/
  • pol中的隐藏代码,只能使用一次。每次你生成一个 pol,生成一个要使用一次的代码。没有代码、错误代码或使用代码是没有投票权。有点像隐藏的验证码。更用户友好但不太安全。

这完全取决于您要防止什么。如果它只是超载,但人们可以投票不止一次,那么你有更多的选择。如果您只想允许每个用户进行一次投票,那么只有注册系统是安全的。尽管当然有人可以创建一个以上的帐户。

于 2012-12-17T09:03:51.820 回答
0

虽然我通常讨厌 Captcha 的......你可以尝试在你的网站上实现一个。您甚至可以让 Captcha 仅在来自同一 IP 的 X 票后显示,这样公众甚至都不会看到它。

于 2012-12-17T08:52:20.260 回答