AJAX验证没有DoS攻击可能
问题描述:
我有,我用它来验证用户的Web服务:AJAX验证没有DoS攻击可能
public bool ValidateUser(string username, string password,bool rememberMe)
{
if(Membership.ValidateUser(username, password))
{
FormsAuthentication.SetAuthCookie(username, rememberMe);
return true;
}
return false;
}
而且我通过jQuery调用它从客户端:
function validateUser() {
var username = $('#<%=UserName.ClientID %>').val();
var pass =$('#<%=Password.ClientID %>').val();
$.ajax({
type: "POST",
url: "Services/LoginService.asmx/ValidateUser",
data: "{'username ':'" + username + "','password':'" + pass + "','rememberMe':'" + $('#<%=chbRememberMe.ClientID %>').attr('checked') + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, status) { OnSuccessLogin(data, status); },
error: OnErrorLogin
});
}
现在我认为它是开放的到拒绝服务攻击,黑客可以多次调用Web服务来降低服务器速度。
有没有办法来保护它?
答
据我可以告诉你的帖子,你担心攻击者会用请求泛滥你的认证Web服务。如果拨打Membership.ValidateUser
昂贵,可能会导致DOS。
首先确保你已经做好了以外的所有的应用层以避免DDOS。谷歌是你的朋友,也许this将有所帮助。
其次,如果Membership.ValidateUser
是昂贵的,尽量让两步验证过程:使用第一个请求以较低的成本产生Proof-of-work令牌的客户端只有在第二个请求接受调用Membership.ValidateUser
如果客户端已经完成一些工作。
请clearify如果你问在TCP层(问题标题表明这一点)或SYN-Flood的,如果你是问有关在DoS攻击服务水平。 – 2012-01-03 08:55:03
我的意思是DoS服务,我改变了标题。 – Mahdi 2012-01-03 09:05:23