2013-03-18 4 views
1

Некоторые приложения обеспечивают безопасность только путем принятия запросов от определенных IP-адресов. Это хороший способ сделать это приложение безопасным. Есть ли способ манипулировать этим IP-адресом реферала в течение периода запроса?referrer ip-манипуляция

getRemoteAddr, getRemoteHost и getRemotePort

Есть ли способ, чтобы установить значение выше при выполнении запроса?

+0

На каком языке это? – Joe

+0

Это имеет значение? – jit

+0

Я пытаюсь рассмотреть API, которые вы упомянули, и выяснить, что вы подразумеваете под «referer» здесь; упомянутые вами методы относятся к удаленному концу соединения, который отличается от поля заголовка HTTP-заголовка. Что вы имеете в виду? – Joe

ответ

2

Да, можно «обмануть» исходный IP-адрес пакетов, чтобы сделать запрос отображаемым с другого IP-адреса, чем он есть на самом деле. Однако это не вызывает беспокойства, потому что трехстороннее рукопожатие TCP не будет завершено, если IP-адрес был подделан, за несколькими исключениями (например, хакерские нюхательные пакеты и генерация ответа, когда пакет проходит по проводу). Вообще говоря, это очень сложно сделать.

Это не очень хорошая практика безопасности, хотя она, как правило, надежна. Причина в том, что IP-адреса могут быть приняты кем угодно, и они часто меняются в пакетах из-за таких технологий, как NAT и fire-walling.

Учтите, что если у вас есть два пользователя в одной частной сети с использованием NAT, и оба они одновременно отправляют запросы на ваш сервер, ваш сервер будет видеть IP-адреса одинаковыми, с разными исходными портами. Дифференцирующим фактором, который позволяет правильно выполнять маршрутизацию, является источник порт, а не IP-адрес. Чтобы сделать это еще менее надежным, исходный порт будет изменяться при каждом новом запросе, который может произойти десятки раз в течение одного сеанса HTTP.

Это, как говорится, имеет преимущество в IP-фильтрации. Вы можете сделать это намного сложнее для кого-то из определенной страны или области для подключения путем фильтрации по IP. Это не должно быть только безопасности, но это может помочь, потому что обычно нетривиально получить действительный IP-адрес из другого диапазона. Например, некоторые организации будут блокировать все неамериканские IP-адреса по умолчанию. Это используется вместе с учетными записями пользователей. Это затрудняет для нелокальных злоумышленников доступ к серверу.

+0

Большое спасибо за это замечательное объяснение. Поэтому, если у меня есть информация о том, какие ip/port разрешены, я могу легко создавать пакеты и отправлять эти пакеты, и я могу обойти эту ip-фильтрацию, предполагая, что протокол HTTP. я прав? что, если это https? Я думаю, что если протокол https, этот способ безопасности по-прежнему является хорошим способом. – jit

+1

Да, если вы знаете, какие IP/порты разрешены, вы можете создавать и отправлять эти пакеты в обход фильтрации IP. Если это https, это не сработает, если у вас не будет крипто ключа (например, с атакой «человек в середине») –