Мы реализовали доступ к Контроллеру и действиям с картой запросов. скажем, URL-адрес типа www.example.com/car/list для доступа к ROLE_ADMIN. но этот ресурс может обойти безопасность Spring, если мы попробуем использовать URL типа www.example.com/adsf. автомобиль / список

RequestMap выглядит так: / car / ** -> ROLE_ADMIN

Как запретить URL-адресу, как в приведенном выше примере, обойти проверку безопасности спринта?

Я попытался изменить карту запроса на / car / * -> ROLE_ADMIN, но у нас возникли проблемы с такими ссылками, мы не можем обновить шаблон для всех из них.

0
Nikesh Devaki 20 Июл 2020 в 11:56
1
Ваш вопрос, как предотвратить это? Не могли бы вы поделиться примером?
 – 
cfrick
20 Июл 2020 в 13:11
1
Можете ли вы показать весь requestMap?
 – 
Jeff Scott Brown
20 Июл 2020 в 17:08
Какой плагин вы используете? невозможно дублировать с помощью BeAPI.
 – 
Orubel
20 Июл 2020 в 22:06
Не видя никакого кода, я подозреваю, что это не реальная проблема безопасности Spring, а проблема с одним из плагинов Grails API или обработчиком REST (?). Я не могу дублировать это в подключаемом модуле BeAPI (который я поддерживаю), поскольку коммуникация и бизнес-логика разделены, поэтому такая проблема НИКОГДА не возникнет.
 – 
Orubel
20 Июл 2020 в 22:24
1
Вы хотите сказать, что запрос к /adsf.car/list возвращает тот же контент, что и запрос к /car/list? Паттерн /car/** не должен защищать /adsf.car/list.
 – 
diogenesgg
21 Июл 2020 в 20:20

1 ответ

Лучший ответ

Одно из найденных нами решений - добавление ограничений в URLMappings. Допускаются только буквы, числа и '_', '/' в URL-адресе запроса.

Без указанных ниже ограничений любой может обойти URL-адрес, защищенный с помощью Spring Security requestMap, добавив [точку] к контроллеру или действию.

"/$controller/$action?"{
    constraints {
        controller(matches:/[A-Za-z0-9\-_]*/)
        action(matches:/[A-Za-z0-9\-_]*/)
    }
 }

ПРИМЕЧАНИЕ. Если вы используете приложение Spring и карту запросов для защиты доступа к своим ресурсам, проверьте, надежно ли они защищены, добавив [точку] к контроллеру и действию

0
Nikesh Devaki 22 Июл 2020 в 10:46
Тем не менее, это определенно ошибка, и команда Grails должна ее устранить; КАЖДЫЙ не должен быть вынужден вводить эти ограничения из-за этого. Вы должны отправить это как проблему команде Grails и/или использовать подключаемый модуль Beapi (github.com /orubel/Beapi-API-Framework), пока это не будет исправлено.
 – 
Orubel
23 Июл 2020 в 22:18