Можно ли подделать IP-адрес для HTTP-запроса?

27

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

Для выполнения полного действия GET (независимо от того, получаете вы его или проходили или нет) требуется законный IP-адрес? Или сайт будет спамить сообщениями со случайных поддельных IP-адресов?

(POST отличается?)

TND
источник
2
DuckDuckGo использует другой подход: они не отслеживают IP-адреса, на тот случай, если их попросят. См. Их политику конфиденциальности в duckduckgo.com/privacy.html#s3 . Вы говорите «на всякий случай, если это необходимо» - у вас есть хорошие идеи, почему это может быть необходимо?
Рэнди Оррисон

Ответы:

31

Ну, да. Или, может быть. Это зависит от того, откуда вы получаете данные «IP-адреса» и доверяете ли вы им.

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

Однако из-за широкой распространенности обратных прокси-пакетов IP-пакет часто может искажать источник соединения, и поэтому были введены различные заголовки HTTP, чтобы позволить прокси-серверу предоставлять «фактический» IP-адрес источника. Проблема здесь в том, что вы должны доверять тому, кто отправляет заголовок, чтобы предоставить точную информацию. Кроме того, настройки по умолчанию (или ошибочные копии-pasta'd) могут легко оставить вас открытыми для подмены этих заголовков. Следовательно, вы должны определить, являются ли какие-либо обратные прокси-серверы законно вовлеченными в ваши запросы, и убедиться, что они (и ваш веб-сервер) правильно настроены и защищены.

romble
источник
23

Нет.

TCP-соединения (которые использует HTTP) требуют двунаправленной связи. Хотя вы можете легко подделать исходный IP-адрес SYNпакета, SYN-ACKответ от сервера будет перенаправлен на IP-адрес, который вы подделали в исходном пакете - вы не сможете завершить соединение, пока не увидите ответ от сервера.

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

Шейн Мэдден
источник
12

Короткий ответ .. не сегодня вы не можете.

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

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

Майк
источник
8

HTTP работает по TCP. Чтобы TCP работал, вам нужно полное трехстороннее рукопожатие SYN / ACK, прежде чем вы доберетесь достаточно далеко, чтобы выполнить запрос GET или POST, поэтому простой подделанный источник мало что даст. Другие более продвинутые формы спуфинга (MitM) будут по-прежнему эффективны.

techieb0y
источник