Это уязвимость веб-приложения? - PullRequest
3 голосов
/ 29 ноября 2010

Я передаю переменную в SWF-файл, который обеспечивает доступ к нескольким другим SWF-файлам.Вы можете увидеть строку, которую я использую для присвоения значения переменной под комментарием THIS LINE ниже.

    <script type="text/javascript">
                /*THIS LINE*/
                var flashvars = {a: "<%= User.Identity.IsAuthenticated %>"};
                /*
                   Some other stuff here...
                */
        swfobject.embedSWF("index.swf", "myAlternativeContent", "100%", "100%", "10.0", "expressInstall.swf", flashvars, params, attributes);
    </script>

Я обеспокоен тем, что кто-то, использующий прокси-сервер HTTP, может просто переключить значение aот Ложного до Истинного, если они хотят получить доступ.Правильно ли я беспокоиться?

Есть ли другой способ, которым я должен контролировать, разрешен ли доступ к дочернему SWF?

Ответы [ 5 ]

4 голосов
/ 29 ноября 2010

Я бы сказал, не испускайте ничего, к чему у них нет доступа.В этом случае, если они не аутентифицированы, не отправляйте этот скрипт в браузер.

Да, вы должны быть обеспокоены.

Предполагая, что вы не можете изменить поток(т.е. вы должны отправить скрипт, даже если он не аутентифицирован), тогда я бы изменил значение «истина / ложь» на ключ какого-то типа.Потомки должны проверить, что ключ был передан перед выполнением.

Если возможно, укажите ключ пользователя.

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

ОБНОВЛЕНИЕ:
Основываясь на очень хороших комментариях, у меня другой маршрут.

Добавить обработчик веб-запроса (файл .ashx) на сайт.Попросите клиента вызвать это для загрузки SWF-файла.Обработчик должен сначала проверить, действительно ли они вошли в систему. Если они есть, обработайте файл.Если нет, просто закройте соединение.

В основном измените строку встраивания, чтобы она выглядела примерно так:

swfobject.embedSWF("grabFile.ashx?id=123", "myAlternativeContent", "100%", "100%", "10.0", "expressInstall.swf", flashvars, params, attributes);

Затем добавьте обработчик запросов .ashx в свой тест сайта для входа в систему до ответа. написание фактического содержимого SWF-файла.

1 голос
/ 29 ноября 2010

Да, что мешает злоумышленнику написать статическую HTML-страницу, которая делает это:

var flashvars = {a: "AUTHENTICATED"};
1 голос
/ 29 ноября 2010

Да, они могли.Безопасность не работает на стороне клиента, вам придется контролировать доступ к файлам с сервера.

0 голосов
/ 29 ноября 2010

Да.Если у пользователя есть Firebug, он может просто посмотреть, как выглядит код приложения при входе в систему, а затем изменить его на зеркальное отображение, когда он не вошел в систему. Вы должны обрабатывать аутентификацию для каждого запроса на стороне сервера и на стороне сервера.,Если вы попробуете:

If User logged in:
    Put Flash in page
Else:
    Put angry message

Пользователь все еще может скопировать фрагмент Flash, когда он вошел в систему, и вставить его, когда он не вошел, с помощью Firebug и т. Д.

Однако, если вы используете:

Put Flash in page
Listen for requests from the Flash app to the server (for database content):
    If the User who requests content is logged in:
        Return content
    Else:
        Return angry message

Это будет работать.

Если все приложение основано на Flash (т. Е. Ему не нужен доступ к базе данных), единственный способ защитить егобудет защищать папки на уровне сервера (см. Amember и др.).Даже если вы заставляете приложение Flash полагаться на ключ с сервером в целях аутентификации, пользователь может просто загрузить ваши сценарии Flash, декомпилировать их и распространять для свободного использования.Они по-прежнему могут делать это с защитой папок, но, по крайней мере, бесплатные пользователи не будут иметь такого доступа.Лучше всего, чтобы приложение полагалось на контент, поступающий с вашего сервера.

0 голосов
/ 29 ноября 2010

Да, это уязвимость, и вам не нужно использовать прокси для ее использования.Вам следует отказать в доступе на сервере, если ваши пользователи не прошли аутентификацию.

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