客户端IP地址的XSS攻击

时间:2014-11-02 18:51:14

标签: php security ip xss htmlspecialchars

我想在我的网页上统计唯一身份访问者。我使用以下函数获取客户端的IP:

$ipaddress = '';
    if ($_SERVER['HTTP_CLIENT_IP'])
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if($_SERVER['HTTP_X_FORWARDED_FOR'])
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if($_SERVER['HTTP_X_FORWARDED'])
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if($_SERVER['HTTP_FORWARDED_FOR'])
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if($_SERVER['HTTP_FORWARDED'])
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if($_SERVER['REMOTE_ADDR'])
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;

在将数据插入数据库之前,我应该在其上调用htmlspecialchars()函数吗?我听说可以操作头文件并更改IP地址以添加XSS或SQL注入(我已经调用real_escape_string()函数)攻击。

1 个答案:

答案 0 :(得分:1)

考虑到您期望的数据类型是IP,您应该只验证该特定数据类型 将以下内容添加到您的代码中

if(filter_var($ipaddress, FILTER_VALIDATE_IP)) return $ipaddress;
else return "Unknown";

这基本上验证了它是一个实际的IP,因此没有SQL注入攻击向量甚至XSS都可以通过它。