Влияние безопасности Request.ServerVariables ("REMOTE_ADDR") против Request.ServerVariables ("HTTP_X_FORWARDED_FOR") - PullRequest
3 голосов
/ 25 ноября 2008

Допустим, мы отслеживаем IP-адрес конечного пользователя для веб-службы:

ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If ip = "" Then
    ip = Request.ServerVariables("REMOTE_ADDR")
End If

Я читал, что это лучший метод получения IP-адреса конечного пользователя, потому что он работает даже для пользователей с прозрачным прокси.

Если мы используем IP-адрес конечного пользователя для фильтрации злоумышленников, есть ли какие-либо последствия для безопасности с помощью вышеуказанного метода вместо, скажем, простого использования Request.ServerVariables ("REMOTE_ADDR")?

Например, если мы запретили злоумышленнику IP-адрес конечного пользователя, могли бы они легко изменить свой IP-адрес через прокси-сервер и продолжить использовать наш веб-сервис?

Заранее спасибо за помощь.

Ответы [ 2 ]

9 голосов
/ 25 ноября 2008

REMOTE_ADDR генерируется веб-сервером на основе соединения с клиентом. HTTP_X_FORWARDED_FOR основан на HTTP-заголовке, отправленном клиентом.

Вы не можете доверять вводу от клиента, особенно вводу, который легко подделать, например, заголовки HTTP. Клиенты могут вставить что угодно в этот заголовок HTTP_X_FORWARDED_FOR.

0 голосов
/ 25 ноября 2008

Если пользователи используют прозрачный прокси, приведенный выше код получит реальный IP-адрес. Однако, если они используют анонимный прокси-сервер (например, Anonymizer), на самом деле нет никакого способа получить действительный IP-адрес пользователя.

...