У меня есть интерфейс Flex, подключенный через RemoteObject к Zend Amf от Zend Framework. Это мой единственный способ передачи данных между клиентским уровнем (Flex) и уровнями приложения и сохранения (LAMP с Zend Framework). Вот некоторые способы решения проблемы безопасности:
- Я могу обратиться к TLS, используя mx.messaging.channels.SecureAMFChannel в моем файле services-config.xml и убедившись, что Flash-плеер загружается в оболочку HTTPS и фактически использует HTTPS, поскольку протокол AMF расположен поверх HTTP.
- RemoteObject имеет метод setCredentials, с помощью которого я могу передавать заголовки аутентификации AMF для защиты данных, связанных с пользователем. Предполагая, что TLS действительно безопасен, я могу предоставить методы в конечной точке после аутентификации пользователя.
- Я могу защитить себя от межсайтовых сценариев и других уязвимостей FLASH, правильно настроив crossdomain.xml
У меня возникает вопрос, как защитить свою конечную точку от другого потребителя AMF? Например, если бы был другой потребитель AMF (не Flash, поэтому не связанный crossdomain.xml и безопасностью песочницы Flash), кроме моего клиента Flex, который знал мою конечную точку, что могло бы помешать ему использовать методы, предоставляемые конечной точкой?
Насколько я знаю, мне, по сути, нужен способ аутентификации моего приложения Flex на моей конечной точке Zend Amf. После аутентификации потребителя AMF у меня есть некоторые из упомянутых выше механизмов безопасности для защиты определенных фрагментов данных (например, аутентификации пользователя). Я не могу встроить какой-то механизм аутентификации в свой Flex swf, потому что swf уязвим для декомпиляции (swf нельзя доверять). Хотя конфиденциальные данные защищены с помощью аутентификации пользователя, незащищенные данные вряд ли станут общедоступными, но, насколько я могу судить, они полностью открыты для публичного использования.