保护ajax调用到服务器端功能

时间:2011-10-04 11:00:07

标签: php security codeigniter

我有一个codeigniter应用程序,我通过ajax调用来完成大部分工作。例如,让我们创建帐户。有一个表单有四个字段,用户名,密码,电子邮件和移动设备。

frm = $("signupform").serializearray();
$.post(base_url + "/auth/ajaxlogin/", frm, function(data){
                if(data==="true") {
                    window.location.reload();
                } else {
                   $("#loginresult").show(); 
                }
            });

使用此脚本我负责将帐户详细信息发送到auth控制器中的帐户创建方法,创建帐户并为用户签名。但我确定这非常容易受到攻击,说任何用户都可以写恶意脚本在js控制台中连续创建帐户。那么保护像这样的某些功能的最佳方法是什么。

3 个答案:

答案 0 :(得分:3)

Ajax是无关紧要的,就服务器而言,HTTP请求是HTTP请求。

使用常规方法防御此类攻击:

  • 确认选择加入测试已发送至电子邮件地址
  • 限速
  • Captcha(只有在上述情况下没有提供足够的保护,他们才会惹恼人们)

答案 1 :(得分:0)

每个页面都可以写出一个唯一的密钥,仅在短时间内有效,构成提交的一部分。此密钥仅在一次且仅几分钟内有效,并且必须对要使用的表单提交有效。密钥在源代码中可见,但由于它只有一次有效,因此会阻止持续创建帐户。

您还可以缩小和限制您的JS,这将使恶意攻击者更难攻击您的网站。

答案 2 :(得分:0)

您可以通过多种方式实现安全性 - 但是如果您想要锁定单个用户滥用,为什么不检查传入请求的IP并阻止来自同一IP的重复请求,例如X分钟?这不是一个解决方案,但是可以添加其他方法的附加层。