如果用户尝试登录超过6次,我正试图阻止访问我的网站。我目前正在使用此代码获取客户端IP地址以阻止其访问:
string strHostName = System.Net.Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
问题是这将返回公共IP地址。如果我使用此地址,我可能会阻止访问整个客户端网络。
有什么办法可以阻止进行登录尝试的用户?
答案 0 :(得分:0)
简答:不。您可以在请求标头中验证的大多数其他内容都可以被客户端浏览器欺骗,因此很容易更改。
最好的方法是阻止来自相同IP地址/范围的登录尝试,而不是阻止。一旦最近有来自同一IP的错误登录尝试,您可能会引入人为延迟。例如,记录每个尝试服务器端并在每次后续登录尝试时检查此日志 - 如果在最后2分钟内登录失败超过5次,则使应用程序在返回响应之前等待2秒。这将大大降低任何自动暴力攻击的有效性,同时允许同一公共IP上的合法用户访问其帐户。