2011-10-04 59 views
0

我有一个codeigniter应用程序,我通过ajax调用大部分的东西。例如,让我们创建帐户。有一个表单有四个字段,用户名,密码,电子邮件和手机。安全的Ajax调用服务器端功能

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

这个脚本我正在发送帐户详细资料将在auth控制器帐户创建方法,创建帐户和登录用户的照顾。但是我相信,这是非常脆弱的,说任何用户可以编写一个恶意脚本在他们的js控制台中连续创建账户。那么保证某些功能的最佳方式是什么?

+0

如果AJAX或标准POST提交,应该有消毒/保护措施来缓解这些类型的帐户创建袭击没有关系。 – Jakub

回答

3

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

用于防御那种进攻的正常途径:

  • 确认选择在测试发送到电子邮件地址
  • 限速
  • 验证码(只有上述不提供足够的保护,他们惹恼人)
0

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

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

+0

但是可以通过简单的方式反转缩小和混淆。 – MacMac

+0

为什么还要反转呢?只需使用诸如Firebug之类的东西来监视HTTP请求。 – Quentin

+0

我从来没有说过会让事情变得安全 - 这只是另一个障碍...... –

0

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