У меня есть интерфейс 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 нельзя доверять). Хотя конфиденциальные данные защищены посредством аутентификации пользователя, незащищенные данные вряд ли общедоступны, но, насколько я могу судить, полностью открыты для публичного использования.