我有一个用于验证用户身份的Web服务:
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服务来减慢服务器速度。
有没有办法保护它?
答案 0 :(得分:1)
据我所知,您可能会担心攻击者会根据请求充斥您的身份验证网络服务。如果对Membership.ValidateUser
的调用很昂贵,这可能导致DOS。
首先确保您已完成外部应用程序层的所有操作以避免DDOS。谷歌是你的朋友,也许this会帮助你。
其次,如果Membership.ValidateUser
价格昂贵,请尝试进行两步验证过程:使用第一个请求为客户端廉价生成Proof-of-work令牌,并仅接受对{{1}的调用如果客户端做了一些工作,则在第二个请求中。
答案 1 :(得分:0)