Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Аутентификация на RED5 (http://www.flasher.ru/forum/showthread.php?t=117718)

protey 04.11.2008 13:08

Аутентификация на RED5
 
Написал флешку которая пишет звук и видео на сервер с red5.
Использую дефолтный WEbApp OflaDemo. НО вопрос как обеспечить секюрность доступа к серваку netconnet тупо nc.connect( "rtmp://72.58.56.52/OflaDemo/
то есть любой Вася сможет подконектиться и напихать мне туда че угодно. Как защититься? то ест уантентифицировать на сервере соединение по какому нибудь паролю хотябы.
Спасибо кто откликнется.

terbooter 04.11.2008 22:47

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

protey 05.11.2008 02:07

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

Код:

public class Application extends ApplicationAdapter {
        private IScope appScope;

        private IServerStream serverStream;

        /** {@inheritDoc} */
    @Override
        public boolean appStart(IScope app) {
                appScope = app;
                return true;
        }

        /** {@inheritDoc} */
    @Override
        public boolean appConnect(IConnection conn, Object[] params) {
                // Trigger calling of "onBWDone", required for some FLV players
                measureBandwidth(conn);
                if (conn instanceof IStreamCapableConnection) {
                        IStreamCapableConnection streamConn = (IStreamCapableConnection) conn;
                        SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig();
                        bwConfig.getChannelBandwidth()[IBandwidthConfigure.OVERALL_CHANNEL] =
                                1024 * 1024;
                        bwConfig.getChannelInitialBurst()[IBandwidthConfigure.OVERALL_CHANNEL] =
                                128 * 1024;
                        streamConn.setBandwidthConfigure(bwConfig);
                }
               
                return super.appConnect(conn, params);
        }

        /** {@inheritDoc} */
    @Override
        public void appDisconnect(IConnection conn) {
                if (appScope == conn.getScope() && serverStream != null) {
                        serverStream.close();
                }
                super.appDisconnect(conn);
        }
}


CrazyFlasher 05.11.2008 14:58

если запись будет осуществляться из браузера, то Вася при отсутствие crossdomain'a на сервере с соответствующими настройками получит security error, если поптытается передать видео из своей флэшки.

protey 05.11.2008 23:09

CrazyFlasher - поподробнее можно?

ZVEr13 06.11.2008 09:06

Цитата:

Сообщение от CrazyFlasher (Сообщение 774874)
если запись будет осуществляться из браузера, то Вася при отсутствие crossdomain'a на сервере с соответствующими настройками получит security error, если поптытается передать видео из своей флэшки.

Все очень просто. Помещаете в свое приложение (сервис - папка OflaDemo в вашем случае) вайлик crossdomain.xml где прописываете домен для доступа.
Пример фалика можно у видить в приложении (сервисе) root:
Код:

<?xml version="1.0"?>
<cross-domain-policy>
        <site-control permitted-cross-domain-policies="all"/>
        <allow-access-from domain="localhost" to-ports="20-65535"/>
        <allow-access-from domain="*.local" to-ports="20-65535"/>
</cross-domain-policy>

В данном случае доступ ограничен только входом с localhost (локальная машина) и доменом оканчивающися на .local. Вам же нада просто прописать свой домен.

protey 11.11.2008 02:14

Не не пашет кроссдомайн, может потому, что сама флешка написана на AC 2.0 но суть защиты не в этом!!! Например на сервере 72.58.56.52 поднят RED5 с дефолтным портом 1935 (для rtmp). Злоумышленик просек что на данном хосте
есть RED5 и быстро пишет свой рекордер прописывает в в нем nc.connect('rtmp://72.58.56.52/OflaDemo/'); и всё теперь он может смело пихать на сервер видео и аудио до тех пор пока на винте сервака не закончится место и он тупо не ляжет!
Попробовал пойти по пути другому на фаере сервака прописал:
- ipfw add deny tcp from any to 72.58.56.52 1935 in via em0 #запретить всем юзать порт 1935
- ipfw add pass tcp from me to 72.58.56.52 1935 # разрешить соединения по порту 1935 только от себя

во флеше прописываю: nc.connect('rtmp://localhost/OflaDemo/');

Запускаю прямо на серваке флешку:
http://72.58.56.52/recorder.html

не конектиться к медиа. Оказывается флешка localhost не понимает. КТО ЗНАЕТ ПОЧЕМУ????? Я всегда думал что флеша определяет localhost там где она запущена а не у клиента. Подскажите может нужны какет то шаманства?
чтоб флеша запущенаная браузером на хосте http://72.58.56.52 понимала его как и localhost ...

terbooter 11.11.2008 08:38

А почему флешка должна разрешать локалхост, как место где она зарущена?
Домен, на который зашел пользователь может грузить флешку совсем с другого домена. И что тут будет локалхостом?

Распространенная практика что адрес ртмп сервера передается через флэшварсы.

ZVEr13 11.11.2008 09:50

На самом деле флешка действительно считает localhost то место где она запущена. Вот только все флешки запускаются не на сервере а у клиента плагином браузера или компонентом ActiveX!!! (то есть клиентская машина и есть localhost).

По поводу RED5 если кроссдоменный файл не работает то пожалуй:
Цитата:

Самый простейший способ это генерить какойни-будь ключ во флешке
и передавать его в параметрах при коннекте, и если ключ не валидный то реджектить коннект.
тогда нада будет коннектится как nc.connect('rtmp://localhost/OflaDemo/', 'key');

protey 11.11.2008 10:36

ZVEr13 - с секретным ключем мне тоже идея нравицо НО как его принять и обработать на серверной стороне???


Часовой пояс GMT +4, время: 11:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.