0

我正在建立我的第一个网站。它是一家在线房地产中介。用户可以自己创建个人资料,然后插入广告并上传图片。

有人告诉我,我应该检测多个日志记录尝试以防止暴力攻击。好吧,我使用以下代码检测 IP:

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];} else
{ $ip=$_SERVER['REMOTE_ADDR'];} 

系统在一定的延迟内计算错过的记录尝试,并在数据库中保存一个禁止列表。它工作得很好......至少当我自己测试它时!

然后当我被告知“谨防通过虚假 IP 进行盗版”时,我得到的印象是我上面提到的保护系统无效。

有 :

1) 盗版者可以使用的软件,其中包含可以隐藏其真实 IP 的代理

2) 网络上的代理也可以隐藏真实 IP。

1) 和 2) 有什么区别?

我想知道如何使用代理以及他们在非法行为方面能够做什么

  • 有人可以随意更改它的IP吗?
  • 中国或俄罗斯的某个人可以“模拟”西欧或美国的 ip 吗?
  • 我可以做更多的事情来检测任何可疑活动吗?

非常感谢。

4

3 回答 3

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));
}

X-Forwarded 的更多信息

于 2012-10-30T09:07:41.953 回答
2

正如 Dagon 所说,IP 地址是一种非常弱的识别用户的方法,黑客几乎肯定不会使用自己的 IP 地址,而是使用被盗的机器或僵尸网络;另一方面,许多企业用户可能看起来都来自同一个 IP 地址,如果有人忘记了密码,您很容易最终阻止该建筑物/公司的每个用户。

抵御暴力攻击的第一道防线是拥有强大的密码策略;通常,这被假定为至少 7 个字符,至少有一个数字和一个标点符号。这通常会惹恼用户,并使他们讨厌您的网站。

下一个防御——如果你认为你真的处于危险之中——是验证码;这让用户更加讨厌你。

底线是:如果你正在构建你的第一个网站,我会看一个现成的框架,而不是自己发明一切。考虑PEAR:auth

于 2012-10-30T09:21:11.850 回答
2

代理是一个可以屏蔽你的ip的服务器。它会像发送请求一样发送您的请求,然后将收到的响应发回给您。

有人可以随意更改它的IP吗?

不,他们不能只是将他们的 ip 更改为他们喜欢的任何内容。但他们可以掩盖它。

中国或俄罗斯的某个人可以“模拟”西欧或美国的 ip 吗?

是的

我可以做更多的事情来检测任何可疑活动吗?

如果您使用暴力技术检测到某些用户名使用错误密码登录太多次,您可以使用sleep函数减慢他的速度。这种技术不会切断没有恶意使用代理的用户,并且会减慢蛮力黑客攻击的速度。

if($wrongAttempts > 5) sleep(3000);

if($password == $_GET[pass]) 
{
   // ...
}

您还可以开始包含验证码图像以提高安全性或阻止帐户一段时间。

于 2012-10-30T09:24:30.460 回答