Nat*_*han 8 php address-bar javascript-injection
我最近发现我的PM系统存在一个巨大的安全问题,它允许用户for
通过地址栏中的循环尽可能多地发送消息.有人把它放到地址栏中:
javascript:for(x=0;x<10000;x++){ $('#compose form').submit(); }
Run Code Online (Sandbox Code Playgroud)
并且消息被发送了1000次给我,我的收件箱中充满了相同的消息,我的数据库非常充实,phpMyAdmin非常迟钝.
我的问题是,我该如何防止这种情况?这是一个重大问题.
此外,表单是使用AJAX提交的.
编辑:
我使用PHP,所以我该如何防止这种情况?就像我怎样才能将消息发送到每5分钟左右发送一次的消息,如果他们在5分钟内提交了多个消息,则会显示错误(或者根本不显示任何用户反馈,只是停止提交)?
有一种明显的方法可以修复它,并且问题不在于客户端,而在于服务器端。
您的服务器脚本不应允许过于频繁地发送消息- 例如。通常每 10 分钟一次。为此,您可以在服务器端使用会话机制并在用户发送电子邮件时保存信息。如果用户尚未发送电子邮件,您还应该将该信息保存在会话中 - 以区分启用会话的人和禁用会话的人(并且您应该完全阻止后者发送电子邮件)。
会话的实现方式(具体代码)取决于您用于服务器端脚本的语言(PHP、Python、JSP 等)。