我有一个 ajax -> PHP 简单聊天,我想阻止用户发送太多聊天请求或消息太快。什么是限制任何用户可以发送的消息数量以避免垃圾邮件的好方法。我已经对空值和空白消息进行了正常检查。我正在寻找一种方法来防止用户背靠背发送多条消息,例如不断按下发送按钮或按下回车键。我想将此操作限制为每 5 秒 1 条消息,或者如果用户在 5 秒内发送太多问题以强制等待一段时间,然后才能发送另一条消息。
问问题
371 次
3 回答
2
我觉得每分钟的阈值方法比为每条消息设置一个恒定的时间延迟更好。这样会感觉更自然。
如果在客户端用 JS 实现,那么在服务器端也检查速率并在超出速率时返回错误代码是明智的。如果有人试图通过向 AJAX 端点发送请求来利用它,但您也可以实施某种 CSRF 策略来避免这种利用场景。
于 2013-03-15T22:41:07.453 回答
1
处理此问题的一种简单方法是在发送新聊天消息后启动计时器,然后禁用聊天消息提交,直到该计时器达到某个数字(例如 5 秒、15 秒、30 秒)。您可以通过禁用“发送”按钮并将其变灰来直观地向用户表明这一点。
于 2013-03-15T22:29:44.763 回答
0
实施时间延迟:用户在一分钟内不能发布超过 15 次聊天。
于 2013-03-15T22:29:32.270 回答