Как «Контекстный объект» шаблон дизайна используется для повышения безопасности?

StackOverflow https://stackoverflow.com/questions/3260323

Вопрос

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

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

Например: Пользователь отправляет «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.owass.org/index.php/category:owase_security_Analish_of_core_j2eee_design_patterns_project

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

-бен

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top