Как шаблон проектирования «Объект контекста» используется для повышения безопасности? - PullRequest
2 голосов
/ 16 июля 2010

Я знаком с использованием шаблона проектирования объектов контекста - облегченной контекстной оболочки вокруг объектов, передаваемых между уровнями.

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

Например: Пользователь отправляет данные контекста «HTTP / HTML», которые в конечном итоге будут сохранены в виде файла в системе. Метод сохранения файла может определять контекст и декодировать объекты HTML, назначать случайный идентификатор для загрузки файла и связывать действие пользователя и имя файла в базе данных.

Мой вопрос: как это может быть умнее, чем применять все фильтрацию, кодирование и проверку по умолчанию? Какие существуют случаи, когда знание контекста источника повышает безопасность, помимо хорошей проверки / кодирования ввода?

Я работаю в Java / J2EE / Struts, но это можно распространить на другие языки и фреймворки.

Ссылки:

http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm

http://www.cs.wustl.edu/~schmidt/PDF/Context-Object-Pattern.pdf

http://www.owasp.org/index.php/Category:OWASP_Security_Analysis_of_Core_J2EE_Design_Patterns_Project

С благодарностью

-Бен

1 Ответ

1 голос
/ 20 июля 2010

Я не знаю, что отслеживание заражения между уровнями приложения является лучшим приложением шаблона Context Object.Насколько я понимаю, Контекстный объект - это объект, который находится в пределах одного уровня и предоставляет услуги нескольким сообщениям, проходящим через этот уровень.

Где я мог видеть, что это использование в качестве механизма безопасности находится в процессе созданияявного уровня безопасности в вашем приложении.Представьте, что, когда каждый пользователь проходит аутентификацию в вашей системе, для этого пользователя на уровне безопасности создается объект контекста безопасности.Объект контекста безопасности содержит список всех разрешений этого пользователя.Каждый запрос, поступающий в систему от любого пользователя, должен сначала пройти уровень безопасности и быть оцененным по объекту контекста безопасности пользователя.

Если запрос разрешен, уровень безопасности передает его в стек на более высокие уровни для обработки.Если запрос отклонен, уровень безопасности возвращает ошибку пользователю, а остальная часть приложения не является разумной.Централизация проблем безопасности на уровне безопасности предотвращает рассредоточение проверок безопасности по бизнес-уровням и уровням обслуживания.

В этом случае объект контекста безопасности реализует шаблон объекта контекста.Объект контекста является долгоживущим, предоставляя контекст для нескольких пользовательских запросов, но не виден верхним или нижним уровням в стеке запросов.

...