我有一个codeigniter应用程序,我通过ajax调用来完成大部分工作。例如,让我们创建帐户。有一个表单有四个字段,用户名,密码,电子邮件和移动设备。
frm = $("signupform").serializearray();
$.post(base_url + "/auth/ajaxlogin/", frm, function(data){
if(data==="true") {
window.location.reload();
} else {
$("#loginresult").show();
}
});
使用此脚本我负责将帐户详细信息发送到auth控制器中的帐户创建方法,创建帐户并为用户签名。但我确定这非常容易受到攻击,说任何用户都可以写恶意脚本在js控制台中连续创建帐户。那么保护像这样的某些功能的最佳方法是什么。
答案 0 :(得分:3)
Ajax是无关紧要的,就服务器而言,HTTP请求是HTTP请求。
使用常规方法防御此类攻击:
答案 1 :(得分:0)
每个页面都可以写出一个唯一的密钥,仅在短时间内有效,构成提交的一部分。此密钥仅在一次且仅几分钟内有效,并且必须对要使用的表单提交有效。密钥在源代码中可见,但由于它只有一次有效,因此会阻止持续创建帐户。
您还可以缩小和限制您的JS,这将使恶意攻击者更难攻击您的网站。
答案 2 :(得分:0)
您可以通过多种方式实现安全性 - 但是如果您想要锁定单个用户滥用,为什么不检查传入请求的IP并阻止来自同一IP的重复请求,例如X分钟?这不是一个解决方案,但是可以添加其他方法的附加层。