Forum Webscript.Ru
Программирование => Perl => Тема начата: Maxim. от 05 Сентября 2001, 18:55:03
-
Имеем: С чужого сервера загружается HTML страница с формой. После заполнения полей формы она передается на обработку программе на том-же сервере (расширение: asp). Требуется перенести страницу с формой на другой (мой) сервер, а программа обработки формы остается на прежнем (чужом) сервере. При попытке отправить форму (загруженную с моего сервера) на обработку на чужой сервер - выдается сообщение, что так нельзя. В чем может быть причина и как ее обойти ??
С уважением.
-
в чем проблема:
проверяется рефферер.
как обойти:
вставить в хттп запрос нужный рефферер
-
Насколько я понял ответ AliMamed - под \\"реферер\\" Вы наверное имеете в виду некое
значение (value) для невидимого (hidden) поля
формы. Действительно такое поле есть и в нем
я получаю (а затем и передаю на обработку) при запросе формы с \\\'чужого\\\' сервера мой IP адрес. Это все я воспроизвел и для случая запроса формы с моего сервера. Однако этого
не достаточно. Как то \\"чужой\\" сервер распознает - что форма получена с другого сервера. Куки я на браузере заблокировал.
С уважением.
-
Насколько я понял ответ AliMamed - под \\"реферер\\" Вы наверное имеете в виду некое
значение (value) для невидимого (hidden) поля
формы.
Вы поняли неправильно.
rfc2616
-
Теперь понял - Вы имеете ввиду одну из переменных среды: HTTP_REFERER. Насколько я понял, этот параметр браузер фиксирует автоматически после загрузки HTML страницы с
сервера (в моем случае страницы с формой), а
затем передает среди переменных среды на следующий сервер, куда он отправляет форму на обработку. Так каким образом я могу на стороне клиента динамически подменить адрес моего сервера на адрес \\"чужого\\" ? С помощью
JavaScript ?
С уважением.
-
Теперь понял - Вы имеете ввиду одну из переменных среды: HTTP_REFERER. Насколько я понял, этот параметр браузер фиксирует автоматически после загрузки HTML страницы с
сервера (в моем случае страницы с формой), а
затем передает среди переменных среды на следующий сервер, куда он отправляет форму на обработку. Так каким образом я могу на стороне клиента динамически подменить адрес моего сервера на адрес \\"чужого\\" ? С помощью
JavaScript ?
С уважением.
На стороне клиента - не получиться, а сделать свой обработчик формы с последующей отправкой ее данных на другой сервер с подменой referer - реально.
perldoc LWP::UserAgent
perldoc lwpcook
-
Спасибо за совет. Может быть подскажете ресурс в сети, близкий к предлагаемому решению ?
С уважением.
-
C REFERER похоже разобрался и из моего CGI скрипта передаю
необходимое значение на \'чужой\' сервер. Однако этого оказалось не достаточно. Необходимо еще передать из моего
CGI скрипта на \'чужой\' сервер IP адреc клиента. который передал заполненную форму этому моему CGI скрипту. Попробовал cделать это через HTTP::Request (по аналогии с
REFERER) - не получилось. Может кто посоветует решение ?
-
Извините за любопытство, а зачем это надо? :confused:
-
В ответ на предыдущий вопрос: стандартная форма с \'чужого\'
сервера осуществляет слабый контроль за корректностью
заполнения полей этой формы. Поэтому слишком часто попадаются неверно заполненные поля (например адрес e-mail). Я хочу в своем варианте той-же формы сделать этот
контроль лучше.
-
Originally posted by Maxim.
Необходимо еще передать из моего
CGI скрипта на \'чужой\' сервер IP адреc клиента. который передал заполненную форму этому моему CGI скрипту. Попробовал cделать это через HTTP::Request (по аналогии с
REFERER) - не получилось. Может кто посоветует решение ?
И не получиться.
Это невозможно.:)
-
Да, с изменением IP адреса (в программе) действительно сложно. Но может быть лучше решить вопрос иначе - я пробовал менять REFERER в CGI-Perl скрипте и из него-же
передавал запрос на \'чужой\' сервер для обработки формы.
Проблема REFERER решалась, но возникала проблема IP адреса. Тогда возможно следует передавать форму на обработку \'чужому\' серверу прямо из браузера (с клиентской
машины), но перед отправкой CGI скриптом поменять REFERER ?? Но как это сделать ??
-
Originally posted by Maxim.
Да, с изменением IP адреса (в программе) действительно сложно. Но может быть лучше решить вопрос иначе - я пробовал менять REFERER в CGI-Perl скрипте и из него-же
передавал запрос на \'чужой\' сервер для обработки формы.
Проблема REFERER решалась, но возникала проблема IP адреса. Тогда возможно следует передавать форму на обработку \'чужому\' серверу прямо из браузера (с клиентской
машины), но перед отправкой CGI скриптом поменять REFERER ?? Но как это сделать ??
Давай так: мухи отдельно, котлеты отдельно.:)
CGI-скрипты работют на стороне сервера и никакого понятия о броузере не имеют.
Если уж тебе нужна какая-то подстановка, проверка значений - используй javascript.
-
Конечно отдельно. А если по существу то: то, что я нашел по вопросу подмены HTTP_REFERER, так это подмена на нужное
значение в CGI скрипте и после этого отправка запроса (формы) на \'чужой\' сервер прямо из этого CGI скрипта. Т.е. имитация браузера средствами CGI. В моем случае это не подходит, т.к. возникает проблема с IP адресом - на \'чужой\' сервер в этом случае передается IP моего сервера, а не IP клиента. Может быть возможно из CGI скрипта отправить
страницу с формой (еще пока пустой) браузеру клиента и уже
в этот момент подсунуть ему необходимое значение HTTP_REFERER ?!
-
Сообщение от Maxim.
Может быть возможно из CGI скрипта отправить
страницу с формой (еще пока пустой) браузеру клиента и уже
в этот момент подсунуть ему необходимое значение HTTP_REFERER ?!
HTTP запрос серверу с данными формы будет формировать в этом случае броузер. И ререфер он сформирует соответствующим образом.:))
-
Сообщение от Maxim.
В моем случае это не подходит, т.к. возникает проблема с IP адресом - на \'чужой\' сервер в этом случае передается IP моего сервера, а не IP клиента.
А в чем проблема-то ? Ну и пусть твой IP передается - или на той стороне, куда таким макаром постится форма, запрещено обрабатывать запросы с IP от твоего сервера ?
-
Чего-то я читал, читал. Но так и не понял, на кой это все нужно?
И если у тебя забанен IP, то проще поменять бесплатного хостера ;)
-
В продолжении этой темы: в "моем" CGI скрипте я формирую
запрос к "чужому" серверу, в котором передаю параметры из
формы и устанавливаю нужный HTTP_REFERER (т.е. изображаю для него браузер). Как в этом случае передать этому "чужому" серверу информацию о машине клиента (с которой собственно и был вызван "мой" CGI скрипт), чтобы ответная страница с этого "чужого" сервера попала на машину (браузер) клиента??
-
Сообщение от Maxim.
В продолжении этой темы: в "моем" CGI скрипте я формирую
запрос к "чужому" серверу, в котором передаю параметры из
формы и устанавливаю нужный HTTP_REFERER (т.е. изображаю для него браузер). Как в этом случае передать этому "чужому" серверу информацию о машине клиента (с которой собственно и был вызван "мой" CGI скрипт), чтобы ответная страница с этого "чужого" сервера попала на машину (браузер) клиента??
Зачем "передать этому \'чужому\' серверу информацию о машине клиента"???
Ответ от него получишь и воспользуешься оператором print.:) Никаких дополнительный усилий не надо.:)
-
А как замену HTTP_REFERER делать в ПХП ?
-
dynamite
ты малость форумом ошибся - это форум по перл.
И учи HTTP-протокол, не будешь глупых вопросов задавать
-
Документация на тему - http://www.kilobytes.by.ru/http.shtm (http://www.kilobytes.by.ru/http.shtm)
-
Хех...Документ юнного крякера :)))))))))))))))))))))
Хмм...раз такая проблема то почему нельзя например (чисто теоритически) слать на 80 порт HTTP запрос, состевленный ручками?
Perl-то умеет работать с сокетами?
-
Собственно, и perldoc LWP::Protocol где-то проскакивало, да и HTTP::Request не кто не запрещал, IO::Socket - тоже хорошая штука