forum.bitel.ru
http://forum.bitel.ru/

SE100. ID абонента при HTTP-редиректе.
http://forum.bitel.ru/viewtopic.php?f=44&t=9787
Страница 1 из 1

Автор:  alf_from_melmok [ 01 окт 2014, 18:09 ]
Заголовок сообщения:  SE100. ID абонента при HTTP-редиректе.

В SE100, через Reject-to-Accept, либо через CoA (судя по документации) можно отправить в HTTP-Redirect-Profile переменную %u (для RSE), в которой указать URL для редиректа на страницу с задолженностью.

Сразу же возник соблазн поставить в URL редиректа - CID, номер договора или еще что-то, что идентифицирует абонента. По идее, это значение будет уникальным для сессии (а может и нет). Но очень хочется проверить. Это нужно для того, чтобы пользователя сразу заредиректить в свой кабинет без ввода номера договора и пароля, т.е. без авторизации. Дополнительной проверкой будет сверка IP адреса на стороне вэб-сервера личного кабинета (свой скрипт на вэб-сервере, работающий с некоторыми реплицированными страницами таблицами биллинга) с тем что выдал BRAS и с тем, что видно в текущем коннекте по HTTP.

Так вот вопрос в том, что известно об абоненте в ServiceActivator что можно было бы без лишнего напряга при процессинге поставить в этот url чтобы в соотв. атрибуте вышло - http://stat.isp.ru/privet.php?ID=from_b ... E100_magic

Автор:  Amir [ 01 окт 2014, 18:44 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

ID договора известно:
ServiceActivatorEvent e
e.getInetServRuntime().contractRuntime.contractId

Еще есть страница оповещения об ошибке, inet_connection_error.xsl
viewtopic.php?f=44&t=7962

Автор:  snark [ 29 окт 2014, 14:50 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

alf_from_melmok писал(а):
нужно для того, чтобы пользователя сразу заредиректить в свой кабинет без ввода номера договора и пароля, т.е. без авторизации

Хотите устроить небольшой DoS своему серверу ловя пакеты всяких торрентов и прочей шняги, которая лезет в инет через НТТР?

Автор:  alf_from_melmok [ 31 окт 2014, 14:06 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

М-да... а слона-то я не заметил...

А как же тогда народ с редиректами сидит?

Первое что пришло в голову - выловить User-Agent из HTTP и промолчать если это не IE, Mozilla или Chrome + браузеры мобильных платформ.
Но наверно есть и "хитрожопые" флудильни...

Хм, тогда как такой "План Б"?
Ставим сервер-прокладку там скрипт который ставит куки сбрасывает клиенту javascript, который делает уже редирект на сервер со страничкой welcome a board! Если на "той" стороне тупой http-клиент (расчет на то, что торрент клиент не имеет javascript engine). "Валидный" же браузер примет скрипт и переведет нашего клиента к нужной нам страничке - "пополните баланс".

В принципе...

Если в среднем с клиента например 5 запросов в секунду, то на 100 отключенных - 500 запросов в секунду, при статической отдаче ... м-да, надо конечно готовиться.
Еще надо учеть возможности самого SE100 - он ведь тоже ставит редирект насколько я понял через собственный встроенный веб-сервер.

Автор:  snark [ 31 окт 2014, 15:13 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

alf_from_melmok писал(а):
Хм, тогда как такой "План Б"?
Ставим сервер-прокладку там скрипт который ставит куки сбрасывает клиенту javascript, который делает уже редирект на сервер со страничкой welcome a board! Если на "той" стороне тупой http-клиент (расчет на то, что торрент клиент не имеет javascript engine). "Валидный" же браузер примет скрипт и переведет нашего клиента к нужной нам страничке - "пополните баланс".

Можно поставить nginx с таким конфигом
Код:
server {
    listen       some.IP.to.redirect:80 default_server;
    server_name  "";

    root        /path/to/docroot;
    access_log  off;
    error_log   /dev/null;

    add_header  Cache-Control no-store;
    add_header  Last-Modified "Thu, 01 Jan 1970 00:00:01 GMT";
    expires     epoch;

    if ($http_user_agent !~* (MSIE|Firefox|Opera|Safari|Chrome)) {
        return 404;
    }

    location / {
        ssi on;
        index   index.html;
        try_files $uri $uri/ @error;
    }

    location /favicon.ico {
        empty_gif;
    }

    location ~ /\. {
        error_page 403 = @error;
        deny all;
    }

    location @error {
        rewrite ^ /? permanent;
    }
}

В index.html, по вкусу, рисуем либо текст "печаль-беда, инетема кирдык", либо редирект.
Инструкция:
Код:
ssi on;

Позволит использовать SSI конструкции типа:
Код:
<!--# echo var="REMOTE_ADDR" default="127.0.0.1" -->

Для теста можете сделать так:
Код:
<html><head><title></title></head><body>IP Address: <!--# echo var="REMOTE_ADDR" default="127.0.0.1" --></body></html>



Изображение

Автор:  alf_from_melmok [ 31 окт 2014, 18:20 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

snark, спасибо за идею!

Вообщем понятно, что сервер обрабатывающий редиректы нужен отдельный со своей кухней по фильтрации. Должен держать на отдачу, как минимум 1000 запросов в секунду на первое время (смотря какая у кого сеть). Иначе весело будет.

Автор:  snark [ 31 окт 2014, 19:16 ]
Заголовок сообщения:  Re: SE100. ID абонента при HTTP-редиректе.

alf_from_melmok писал(а):
понятно, что сервер обрабатывающий редиректы нужен отдельный со своей кухней по фильтрации. Должен держать на отдачу, как минимум 1000 запросов в секунду на первое время (смотря какая у кого сеть). Иначе весело будет.

На самом деле можно поднять nginx где угодно, хоть на биллинге, только директорию с файлами, которые будете отдавать при редиректе лучше расположить прямо в RAM, т.е. тупо сделать диск в памяти на 128МБ, смонтировать его и положить туда файлы и для редиректа и для локального спидтеста (ему надо ~100МБ).

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/