Этого вряд ли достаточно, чтобы защитить вас от вредоносного кода расширения.
Если расширение может получить доступ к вашему бину, то оно также может просто получить доступ к оригинальному FilterChainProxy
через ApplicationContext
. Фактически, он может получить доступ к любому другому компоненту в той же конфигурации, поэтому он может потенциально:
- Загрузка данных учетной записи пользователя, включая пароли
- Изменение или чтение настроек на других компонентах, чтобы сломать систему
- Использовать отражение для непосредственного чтения полей экземпляра
- Изменить текущий контекст безопасности
- Множество других неприятных вещей в зависимости от того, что вы используете
Если в вашем приложении есть недоверенный код, вам нужно будет использовать SecurityManager
, чтобы предотвратить подобные вещи, а затем вы также можете запретить доступ к классам Spring Security. Настройка SecurityManager
может быть трудной задачей, но, вероятно, это единственный вариант, если у вас есть код, которому вы не доверяете, работающий на той же виртуальной машине.
Обновление: Если ваша единственная задача состоит в том, чтобы никто не вызывал метод setFilterChainMap
, то переопределение этого метода, очевидно, предотвратит случайный вызов этого метода через ссылку на ваш bean-компонент (этот метод фактически устарел в 3.1 в пользу конструктора. Однако из вашего вопроса неясно, почему кто-то получит ссылку на ваш экземпляр, а не на исходный бин, или почему это ваша главная задача. FilterChainProxy
обычно не вызывается пользовательским кодом в приложения. Для этого вам необходимо явно запросить его у фабрики бинов.