【发布时间】:2012-01-11 04:41:45
【问题描述】:
我最近发现我的 PM 系统存在一个巨大的安全问题,它允许用户通过地址栏中的 for 循环发送任意数量的消息。有人把这个放到地址栏中:
javascript:for(x=0;x<10000;x++){ $('#compose form').submit(); }
消息被发送了 1000 次给我,我的收件箱里塞满了相同的消息,我的数据库太满了,以至于 phpMyAdmin 非常滞后。
我的问题是,我该如何防止这种情况发生?这是一个主要问题。
此外,表单是使用 AJAX 提交的。
编辑:
我使用 PHP,那么如何防止这种情况发生?就像我怎样才能做到每 5 分钟左右只能发送一条消息,如果他们在 5 分钟内提交了多个消息,它将显示错误(或者根本不显示任何用户反馈并阻止它被提交)?
【问题讨论】:
-
你不能用客户端代码解决这个问题。必须在服务器上完成。
-
你无法控制浏览器中发生的事情;如果你想防止这种情况发生,你需要在服务器端进行。考虑用一个专注于此的问题来代替它。
-
删除了我的答案...你们都是对的所有验证都应该在客户端和服务器端完成...
-
您需要使用您使用的相关服务器技术重新标记您的问题,以便找到合适的服务器端解决方案。
-
@Nathan,如果我不得不猜的话,我会说他们按照最初的要求对您的问题投了反对票,并且没有回来再看一眼。不幸的是,如果您后来投票反对的问题/帖子被编辑了,StackOverflow 不会给您任何通知。
标签: php javascript-injection address-bar