Имам интерфейс на Flex, свързващ се чрез RemoteObject към Zend Amf на Zend Framework. Това е единственото ми средство за транспортиране на данни между клиентския слой (Flex) и слоя на приложението и постоянството (LAMP със Zend Framework). Някои начини, по които мога да се справя със сигурността, са следните:
- Мога да адресирам TLS, като използвам mx.messaging.channels.SecureAMFChannel в моя файл services-config.xml и гарантирам, че Flash player е зареден в HTTPS обвивка и всъщност използва HTTPS, тъй като AMF протоколът е наслоен върху HTTP
- RemoteObject има метод setCredentials, с който мога да предам заглавки за удостоверяване на AMF, за да защитя свързаните с потребителя данни. Ако приемем, че TLS действително е защитен, мога да изложа методи на крайната точка след удостоверяване на потребителя.
- Мога да се предпазя от междусайтови скриптове и други FLASH уязвимости с правилно настроен crossdomain.xml
Въпросът, който имам, е как да защитя крайната си точка срещу друг потребител на AMF? Например, ако имаше друг потребител на AMF (не Flash, така че не е обвързан от crossdomain.xml и сигурността на Flash sandbox), различен от моя Flex клиент, който познава моята крайна точка, какво би го попречило да използва методи, които крайната точка излага?
Доколкото знам, по същество се нуждая от начин да удостоверя автентичността на моето Flex приложение спрямо моята крайна точка Zend Amf. След потребителско удостоверяване на AMF разполагам с някои от механизмите за сигурност, които споменах по-горе, за защита на определени части от данни (като удостоверяване на потребител). Не мога да вградя някакъв механизъм за удостоверяване в моя Flex swf, защото swf е уязвим за декомпилиране (на swf не може да се има доверие). Докато чувствителните данни са защитени чрез удостоверяване на потребителя, незащитените данни едва ли са публични, но доколкото мога да преценя, те са напълно отворени за публична употреба.