XSS-атака на IP-адрес клиента

Я хочу посчитать уникальных посетителей на моей веб-странице. Я получаю 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() функция) атака.

0

Решение

Учитывая, что тип данных, который вы ожидаете, — это IP, вам просто нужно проверить этот конкретный тип данных.
Добавьте следующее в ваш код

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

Это в основном подтверждает, что это фактический IP-адрес, так что никакие векторы атаки SQL-инъекций или даже XSS не могут пройти через него.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]