Да, можно «обмануть» исходный IP-адрес пакетов, чтобы сделать запрос отображаемым с другого IP-адреса, чем он есть на самом деле. Однако это не вызывает беспокойства, потому что трехстороннее рукопожатие TCP не будет завершено, если IP-адрес был подделан, за несколькими исключениями (например, хакерские нюхательные пакеты и генерация ответа, когда пакет проходит по проводу). Вообще говоря, это очень сложно сделать.
Это не очень хорошая практика безопасности, хотя она, как правило, надежна. Причина в том, что IP-адреса могут быть приняты кем угодно, и они часто меняются в пакетах из-за таких технологий, как NAT и fire-walling.
Учтите, что если у вас есть два пользователя в одной частной сети с использованием NAT, и оба они одновременно отправляют запросы на ваш сервер, ваш сервер будет видеть IP-адреса одинаковыми, с разными исходными портами. Дифференцирующим фактором, который позволяет правильно выполнять маршрутизацию, является источник порт, а не IP-адрес. Чтобы сделать это еще менее надежным, исходный порт будет изменяться при каждом новом запросе, который может произойти десятки раз в течение одного сеанса HTTP.
Это, как говорится, имеет преимущество в IP-фильтрации. Вы можете сделать это намного сложнее для кого-то из определенной страны или области для подключения путем фильтрации по IP. Это не должно быть только безопасности, но это может помочь, потому что обычно нетривиально получить действительный IP-адрес из другого диапазона. Например, некоторые организации будут блокировать все неамериканские IP-адреса по умолчанию. Это используется вместе с учетными записями пользователей. Это затрудняет для нелокальных злоумышленников доступ к серверу.
На каком языке это? – Joe
Это имеет значение? – jit
Я пытаюсь рассмотреть API, которые вы упомянули, и выяснить, что вы подразумеваете под «referer» здесь; упомянутые вами методы относятся к удаленному концу соединения, который отличается от поля заголовка HTTP-заголовка. Что вы имеете в виду? – Joe