Как ограничить запуск приложения Flex только с моего сайта? - PullRequest
1 голос
/ 05 августа 2009

возможно ли заставить Flex-приложение работать только с моего домена? Таким образом, пользователь не может скопировать .swf и запустить его локально.

Ответы [ 3 ]

4 голосов
/ 05 августа 2009

Во многих случаях это не сработает из-за модели безопасности, связанной с crossdomain.xml.

http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html

Скажем, например, у меня есть гибкое приложение, в котором есть вызов службы и вход в мою базу данных (возможно, PHP и mysql). Если я не включу его явно в файле политики crossdomain.xml, приложение не сможет взаимодействовать с моим сервером, если файл swf не будет загружен напрямую из моего домена. Если бы приложение было локальным, оно показало бы моему серверу, что localhost пытается получить доступ к моему бэкэнду через гибкое приложение. Таким образом, по умолчанию это не будет работать, если в crossdomain.xml не было введено явное правило, разрешающее доступ с localhost. Кроме того, кто-то не может просто поместить SWF-файл на другой сервер и попытаться получить доступ с моего сервера, если я не добавлю этот удаленный сервер в политику crossdomain.xml.

Итак, вернемся к вашему вопросу. Очевидно, что этот материал crossdomain.xml на самом деле не применяется, если ваше гибкое приложение действительно простое и не пытается выполнять сервисные вызовы на сервер. Например, если у вас есть простая игра, которая просто загружается и играет без дополнительных обращений к серверу внутри flex-игры.

Если вы хотите защитить свое приложение, у вас может быть базовый процесс «телефонный дом» во время последовательности запуска, который делает очень простой вызов сервера на ваш сайт. Это не должно быть чем-то сверхсложным, просто нужно позвонить в оба конца при запуске вашего приложения. Возможно, проверьте наличие простого ключа или строки, хранящейся в переменной на стороне PHP, и не запускайте приложение flex, если этот ключ недействителен. Вы можете жестко закодировать ожидаемый ключ внутри скрипта действий. Или, может быть, есть базовый логгер, который отслеживает, сколько раз запускается приложение, и сохраняет счет в базе данных или что-то в этом роде. Главное, не дайте приложению полностью запуститься, пока этот запрос к серверу не вернет действительный результат.

Если у вас это есть, тогда вступят в действие политики crossdomain.xml, и если кто-то загрузит ваш swf, он не будет работать, потому что попытается позвонить с localhost на ваш сервер. Или, если они украдут ваше приложение и разместят его на своем сайте, оно тоже не будет работать.

2 голосов
/ 11 августа 2009

Самое простое решение - возможно, проверить значение

Application.application.loaderInfo.url

при запуске приложения (например, в событии applicationComplete) и сопоставьте его с доменом вашего веб-сайта.

0 голосов
/ 09 августа 2009

Проверьте также flash.System.Capabilities.playerType в LiveDocs.

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