2013-08-01 86 views
0

我试图阻止访问我的网站,如果用户尝试登录超过6次。我目前使用此代码来获取客户端IP地址,以阻止其访问:阻止单个用户访问网络内的网站

string strHostName = System.Net.Dns.GetHostName(); 
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); 

的问题是,这将返回公网IP地址。如果我使用此地址,我可能会阻止访问整个客户端网络。

有没有什么办法可以阻止只进行登录尝试的用户?

+0

你是否试图阻止访问失败的登录尝试相同的帐户名称? –

+0

它是否反对黑客? – argaz

+0

尝试与帐户名称无关。 – robert00769

回答

0

简答题:没有。大多数您可以在请求头中验证的其他内容可能会被客户端浏览器欺骗,因此可以轻松更改。

最好的办法是阻止来自相同IP地址/范围的登录尝试,而不是阻止。一旦从相同的IP出现了一些最近的错误登录尝试,您可能会引入虚假延迟。例如,记录每个尝试服务器端并在每次后续登录尝试时检查此日志 - 如果在最近2分钟内有超过5次失败登录,请在返回响应之前等待2秒钟。这将显着降低任何自动暴力攻击的有效性,同时允许在同一个公共IP上的合法用户可以访问其帐户。