我正在建立我的第一个网站。它是一个在线房地产代理商。用户可以自行创建个人资料,然后插入广告并上传图片。
我被告知我应该检测多次记录尝试以防止暴力攻击。好吧,使用以下代码我检测到IP:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];} else
{ $ip=$_SERVER['REMOTE_ADDR'];}
系统会在一定延迟内计算错过的记录尝试次数,并在数据库中保留禁止列表。 它的效果很好......至少在我自己测试的时候!
然后,当我被告知'谨防通过虚假IP进行盗版'时,我得到的印象是我上面提到的保护系统无效。
有:
1)pirats可用的软件包含可以隐藏其真实IP的代理
2)网络上的代理也可以隐藏真实的IP。
1)和2)之间有什么区别?
我想知道如何使用代理以及他们在非法行为方面可以做些什么
非常感谢。
答案 0 :(得分:5)
任何人都可以更改ip,proxy,vpn ....
我使用此函数来检测REAL IP地址是否有效:
function getrealip() {
if (getenv('HTTP_CLIENT_IP') && long2ip(ip2long(getenv('HTTP_CLIENT_IP')))==getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP')))
return getenv('HTTP_CLIENT_IP');
if (getenv('HTTP_X_FORWARDED_FOR') && long2ip(ip2long(getenv('HTTP_X_FORWARDED_FOR')))==getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR')))
return getenv('HTTP_X_FORWARDED_FOR');
if (getenv('HTTP_X_FORWARDED') && long2ip(ip2long(getenv('HTTP_X_FORWARDED')))==getenv('HTTP_X_FORWARDED') && validip(getenv('HTTP_X_FORWARDED')))
return getenv('HTTP_X_FORWARDED');
if (getenv('HTTP_FORWARDED_FOR') && long2ip(ip2long(getenv('HTTP_FORWARDED_FOR')))==getenv('HTTP_FORWARDED_FOR') && validip(getenv('HTTP_FORWARDED_FOR')))
return getenv('HTTP_FORWARDED_FOR');
if (getenv('HTTP_FORWARDED') && long2ip(ip2long(getenv('HTTP_FORWARDED')))==getenv('HTTP_FORWARDED') && validip(getenv('HTTP_FORWARDED')))
return getenv('HTTP_FORWARDED');
$ip = htmlspecialchars($_SERVER['REMOTE_ADDR']);
/* Added support for IPv6 connections. otherwise ip returns null */
if (strpos($ip, '::') === 0) {
$ip = substr($ip, strrpos($ip, ':')+1);
}
return long2ip(ip2long($ip));
}
的更多信息
答案 1 :(得分:2)
正如Dagon所说,IP地址是识别用户的一种相当弱的方式,黑客几乎肯定不会使用他们自己的IP地址,而是使用被盗的机器或僵尸网络;另一方面,许多企业用户可能看起来都来自同一个IP地址,如果有人忘记密码,您很容易就会阻止该建筑物/公司的每个用户。
防止暴力攻击的第一道防线是拥有强大的密码策略;通常,这被假定为至少7个字符,至少有一个数字和一个标点符号。这通常会使用户烦恼,并使他们讨厌您的网站。
下一个防守 - 如果你认为你真的有风险 - 是CAPTCHA;这让用户更加讨厌你。
最重要的是:如果你正在建立你的第一个网站,我会看一个现成的框架,而不是自己发明一切。考虑PEAR:auth。
答案 2 :(得分:2)
代理服务器可以屏蔽你的ip。它将发送您的请求,就好像它是它,然后发回给您的回复。
可以随意改变它是Ip吗?
不,他们不能只是将他们的ip改为他们喜欢的任何东西。但他们可以掩饰它。
中国或俄罗斯的某些人可以“模拟”西欧或美国的IP吗?
是
我可以做的比检查任何可疑活动所做的更多吗?
如果您使用强力技术检测到某些用户名使用错误的密码登录太多次,您可以使用sleep
功能减慢他的速度。这种技术你不会切断使用代理而没有不良意图的用户,你会减慢暴力破解。
if($wrongAttempts > 5) sleep(3000);
if($password == $_GET[pass])
{
// ...
}
你也可以开始包括验证码图像以提高安全性或阻止帐户一段时间。