Ajax / SSL / X-Forwarded-Для - PullRequest
       10

Ajax / SSL / X-Forwarded-Для

4 голосов
/ 31 августа 2009

Хорошо, я использую ручку для балансировки нагрузки. Мои серверы Apache видят удаленный IP-адрес как IP-адрес балансировщика нагрузки. Мне нужен сервер apache, чтобы по разным причинам видеть IP-адрес клиента. Я могу использовать X-Forwarded-For, чтобы вытащить это из незашифрованной страницы, но это не часть SSL-страницы ...

Так что, не зная Ajax, мне интересно. Могу ли я использовать ajax, чтобы извлечь X-Forwarded-For из незашифрованной страницы и установить его в качестве переменной на стороне клиента? Я знаю, что это возможно, мне просто интересно, сделал ли кто-нибудь это и вызывает ли это ошибку безопасности в браузере.

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

В любом случае, другой способ получить ip к скрипту тоже будет работать. Я пробовал http://stderr.net/apache/rpaf/,, но он также не знает IP.

1 Ответ

0 голосов
/ 04 марта 2012

AJAX ограничен политикой одного источника, а разные протоколы считаются разными источниками, поэтому вы не сможете сделать HTTP-запрос AJAX со страницы HTTPS.

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

Помещение IP в файл cookie на странице HTTP (в идеале, подписанный или сохраненный в сеансе на стороне сервера, на который ссылается файл cookie) будет работать, но оно не будет таким же безопасным, как чтение фактического IP-адреса сеанса SSL (поскольку злоумышленник может манипулировать файлами cookie HTTP , и вы не можете установить cookie только для HTTPS).

Другим решением этой проблемы является завершение SSL на балансировщике нагрузки и пересылка его в виде HTTP-трафика в Apache.

Еще один подход заключается в использовании низкоуровневой балансировки нагрузки - NAT - которая сохраняет адрес источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...