• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

перенаправление на Url (web-апликация)

  • Автор темы scripter
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

scripter

Всем привет

вопрос, возможно, глупый, но пока ответа не нашел :)

Ситуация. Есть веб-приложение, которое обслуживает некий веб-сервер. Страницы рендерятся не формами, а скриптом, т.е. в поле HTML выводится raw-html.

Задача. Юзер кликает на ссылку, скрипт производит внутренние вычисления и отправляет юзера на какой-то URL.

Проблема. Единственный какой я нашел пока способ перенаправления - это вывод в браузер строки рефреша/редиректа:

Код:
<meta http-equiv="refresh" content="0; url=my_final_url">

Все бы хорошо если б при этом не терялся REFERER. Т.е. по всем таким редиректам реферер пустой. Да и поисковики при индексации очень не любят страницы с рефрешем...

Вопрос. Есть ли какой способ передачи веб-приложением (LotusScript) редиректа на уровне протокола (выдать ему 302 и url), а не на уровне html (refresh)?

Буду рад за возможные ответы и наводки/идеи. Всем спасибо заранее
 
O

oshmianski

scripter
не совсем понял задачу и объяснения.
но, если в агенте выдать print "[" & url & "]", то будет осуществлен переход на нужный url.
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
скрипт производит внутренние вычисления и отправляет юзера на какой-то URL.
агент имеется ввиду? тогда внутри что-нить так
Print({<script language=Javascript>} & Chr(10))
Print({location.href=location.pathname.split('.nsf')[0] + '.nsf/'+"Confirmation?OpenForm&RefNum=} & Cstr(orderID) & {";} & Chr(10))
Print({</script>} & Chr(10))

вариантов перенаправления вообще масса.
- можно в $return прямо ручками писать html страничку с body и прочим. по субмиту агент возвращается на форму (если не задано иное в агенте), а с ретурна куда надо.
Обращали же внимание - если ретурн пустое пишет тупо "Форма обработана"
Так вот кишки $return например:
...
CR:=@Char(13)+@Char(10);
"Expires: Tue, 01 Jan 1980 06:00:00 GMT"+CR+"Pragma: no-cache"+CR+"Content-Type: text/html"+CR+
"<html><head>"+CR+
"<script src=\"/"+wdbn+"/JsDbCommonVariables?ReadForm\"></script>"+CR+"<script src=\""+commonlibpath+"\"></script>"+CR+
"<body bgcolor=ffffff topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 class=\"documentbackground\">"+CR+
"<script>"+CR+
"if (onimod_ui=='noframe') {window.setTimeout('window.location=\"/"+wdbn+"/"+@If(@Contains(HTTP_Referer;"ByTopic");"ByTopicWebNoFrame?ReadForm&Count=18";"ByDateFlatWebNoFrame?ReadForm&Count=18")+"\"',3000)}"+CR+
"else {window.setTimeout('window.location=\"/"+wdbn+"/"+@If(ui="webboardactive";"WebBoardMainActive";"WebBoardMain")+"Categorized?OpenView&RestrictToCategory="+filter+"\"',1000)}"+CR+
"</script>"+CR+
"</body></html>"

- делается страничка-форма вроде Regirectpage. После всех агентов редирект на эту страницу, но с параметрами в урле типа.
Print({location.href=location.pathname.split('.nsf')[0] + '.nsf/'+"ReturnMessage?ReadForm&msg=} &_
ctx.GetItemValue("RegistrationStatus")(0) & Cstr("&errorcode=") & ErrorCode & {";} & Chr(10))
На ней формулка вычисляемая которая по параметрам урла редиректит куда надо
err:=@UrlQueryString("errorcode");
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Да не спорю. Можно и так, а если у вас куки и куча переменных JS подвязаны. Скажем через них подключается смена языка и скины на клиенте?
Вот тогда такая галиматья - писанина и будет.
 
D

Duedev

NetWood, какой смысл во всей этой писанине (в смысле кодировании smile.gif) с редиректами? если есть простой способ редиректа
Цитата(oshmianski @ 31:05:2009 - 22:30) *
print "[" & url & "]"

Все правильно, для ссылочки делаешь обращение к агенту, допустим из текущей базы, ввиде конструкции src="/<Computed Value>/имя агента?OpenAgent ..... для компьтид валью указываешь формулу: @ReplicaID

Ну а в агенте лотус скрипт, который делает все необходимы вычисления и нужный print "[" & url & "]"
 
A

Akupaka

а если у вас куки и куча переменных JS подвязаны
хм... я подобными вещами глубоко не увлекался, но если агент срабатывает с перегрузкой документа, то как помогает форма для редиректа сохранить их значения?..
 
A

Akupaka

спасибо за наводку :) надеюсь, это время будет потрачено не зря ;)
это вот это?..
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
ага. она. с русскими категориями в оригинале она не фурычит. Бурак круто написал. Мега мозг! да забросил.
на ней кстати конфа тамошняя крутится.
по поводу русского стучитесь в личку. сюда не выложить.
и еще по ходу дела поправил я кой чего, уже не вспомню :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!