ГлавнаяСправка по использованию серверного ActionScriptГлобальные функции › protectObject()

protectObject()

protectObject(object)

Защищает методы объекта от кода приложения, в результате чего код приложения не может обследовать или получить доступ к методам объекта напрямую. Данная функция предназначена исключительно для работы в файле secure.asc.

Доступно начиная с версии сервера

Flash Media Server 2

Параметры

object
Объект, который будет защищен.

Возвращает

Объект.

Подробное описание

После защиты объекта вызовом функции protectObject() не назначайте его членом доступных и видимых объектов, а так же не создавайте ссылки на него в глобальных переменных. Объект, который возвращает protectObject() отправляет все вызовы к основному объекту, но препятствует доступу к данным членов объекта. В результате чего, изменение или перечисление членов объекта напрямую становится невозможным. Защищенный объект сохраняет видимую ссылку на основной объект, что обеспечивает действенность объекта. Защищенный объект наследует обычные ссылочные нормы и существует пока такая ссылка имеется.

Flash Media Interactive Server имеет два режима выполнения скриптов: безопасный и обычный. В безопасном режиме загружается и признается только файл secure.asc (если он есть) — никакие другие скрипты приложения не загружаются. Функции getGlobal() и protectObject() доступны только в безопасном режиме. Эти функция весьма мощный инструмент, предоставляющий полный доступ к среде выполнения программы, а так же позволяет создавать системные объекты. Если загружен файл secure.asc, сервер перейдет в режим нормального исполнения скриптов после перезагрузки приложения.

Пример использования

Как показано в примере ниже, после того как исполняется secure.asc вызовы функции load() перенаправляются через определенный пользователем системный вызов:

var sysobj = {}; 
sysobj._load = load; // Скрывает функцию load 
load = null; // Делает недоступным для непривилегированного кода. 
sysobj.load = function(fname){ 
    //  определенный пользователем код для подтверждения/изменения fname 
    return this._load(fname); 
} 
// захватыват глобального объекта. 
var global = getGlobal(); 
 
// защита sysobj и установка его глобально доступности как "system" 
// так же устанавливает атрибуты "только чтение" и "неудалимый". 
 
global["system"] = protectObject(sysobj); 
 
setAttributes(global, "system", false, true, true); 
 
// добавляет глобальную функцию load() для совместимости. 
// отмечает ее как "только чтение" и "неудалимый". 
 
global["load"] = function(path){ 
    return system.load(path); 
} 
 
setAttributes(global, "load", false, true, true);

Смотрите также

LoadVars class

Остальные методы и свойства

Ярлыки: ,

  1. Пока без комментариев.
  1. Пока нету.