【问题标题】:Best way to do 'loose' IP check for protection against session hijacking进行“松散”IP 检查以防止会话劫持的最佳方法
【发布时间】:2011-07-05 15:02:35
【问题描述】:

进行“松散”IP 检查以防止会话劫持(适用于 IPv4 和 IPv6)的最佳方法是什么?我得到了一个数组,它保存了所有用户的 IP 地址以及用户从该地址连接了多少次:

$arr = array(ip_address => connected_times, ...);

现在我是否要进行松散的 IP 检查并将其与 $_SERVER['REMOTE_ADDR'] 进行比较。如果用户只从 1 个地址连接,它是否应该假定会话 ID 已被劫持。同时,如果用户定期从 82.34.24.* 更改 IP 地址到 82.34.24.* 应该假设一切正常,但如果用户突然从 82.34.33.0 或某个不属于的地址连接如果假设会话劫持,相同的 IP 组地址或以前从未使用过(例如最后 20 个请求)。

实现这一点的最佳方法是什么,使用 inet_pton/inet_nton,但是如何实现呢?

【问题讨论】:

    标签: php security session-hijacking


    【解决方案1】:

    您可以比较网络掩码。它会是这样的:

    $new_ip = '82.34.24.128';
    $old_ip = '82.34.25.1';
    
    $old = inet_pton($old_ip);
    $new = inet_pton($new_ipd);
    
    if (($num & 0xFFFFFF00) == ($old & 0xFFFFFF00)) {
       ... identical /24 
    } else {
       ... hijacked?
    }
    

    当然,这假定用户来自的任何网络都是 /24(旧式 C 类)子网。如果它是一个更大的网络,例如 IBM 的某个人,它有一个 /8(旧式 A 类),这将失败,在这种情况下,您需要一个 0xFF000000 的网络掩码。

    【讨论】:

      猜你喜欢
      • 2012-06-03
      • 2012-08-27
      • 2012-05-19
      • 2012-02-20
      • 2017-12-22
      • 2010-11-28
      • 2011-10-16
      • 2017-05-27
      相关资源
      最近更新 更多