powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security имеет неверную архитектуру
25 сообщений из 172, страница 2 из 7
Spring Security имеет неверную архитектуру
    #39956539
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
dakeiras
пропущено...


Потому что они как раз и замещаются. См. ниже ссылки.

Где конкретнее смотреть? На что они замещаются?


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956540
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
ТС имеет в виду, что все замещается одним фильтром OrbitJwtTokenAuthenticationFilter


Да, спасибо!
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956544
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, кстати вот пример клиентской реализации в Swing.

(код самого GUI плохой, прошу не ругаться - он для демонстрации концепта только).

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-gui
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956546
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
mayton
пропущено...

Где конкретнее смотреть? На что они замещаются?


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security


Разве так делаются презентации? Чувак ты серъезно?

Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь
ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать
выводы что фреймворк с мировым именем имеет неверную архитектуру?

Ты серъезно, родной?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956549
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
dakeiras
пропущено...


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security


Разве так делаются презентации? Чувак ты серъезно?

Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь
ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать
выводы что фреймворк с мировым именем имеет неверную архитектуру?

Ты серъезно, родной?


Не делаются, согласен 100%.
Интерес есть, я очень рад. Теперь есть мотивация сделать норм. документацию и презентацию.

Чуть подождите (1-2 месяца).

Ещё раз спасибо за комментарии.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956551
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется за тобой должок.

Ты еще по своему Толстому Робину-Бобину обещал выкатить доклад.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956727
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956850
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)


я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю.

Но вроде всё срослось и решение отлично работает на омологационном проекте.

Это при том что это же решение несколько лет в банке на проде крутится (реализованное индусами по моему ТЗ). И тогда та же самая ситуация была.

Это реально опасно для мозга такими проектами заниматься, ночами не спишь - продумываешь решения.

Кстати поэтому и такая интонация у меня, немного с чувством несправедливости :)

С другой стороны, сделав прошлой осенью мега проект на много миллиардов баксов без единого бага (написав транспилятор Кобола в Яву), уверенность в себе оч. возраста, да...
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956867
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
chpasha
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)


я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю.

По поводу всех велосипедов связанных с безопасностью.

Я брошу 5 копеек. Очень многие Кулибины и Бахметьевы делают свои фреймворки и библиотечки.
Но их разработки не имеют никакого значения до тех пор пока не будет экспертизы со стороны
людей которые инфо-безопасностью занимаются.

И ругать здесь Spring - не продуктивно. Spring это связующий клей для фреймворков. Он просто
предлагает самый верхний уровень абстракций. Если я аннотирую метод @Secured - то я не регламентирую
никоим образом ни алгоритм ни протокол проверки сертификата пользователя. Я отдаю его на откуп
библиотеке и конфигурации. Сюда-же до кучи фильтры сервлетов и прочее. Это просто абстракции.

Ответсвтенность за реализацию и за то как сконфигурировано девелопер берет на себя. Это тоже
самое что внедрить неправильно симметричное шифрование и спалить ключ прямо в сорцах.
Вроде ты и юзал сертифицированные технологии. Но спалился по глупости.

А если ты нашел в JWT Token дефект безопасности - пожалуйста пиши баги сюда
https://github.com/lcobucci/jwt/issues если это действительно баг или предложения по изменениям.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956870
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mayton, насчёт "не изобретать свой фреймворк безопасности и не экспериментировать" - это правильно и общеизвестный факт.

И я с ним согласен.

Кстати я занимаюсь безопасностью в частности. Но это не отменяет вышенаписанное.

Могу сказать одно: есть разрыв между теоретическим аппаратом Веб Безопасности и прикладными моделями предметных областей (ООП, та же Java).

Это кстати вызвано отмороженностью (отбитостью) некоторых безопасников, за ними замечено уже :)
Но тем не менее эта проблема имеет место и применима и к Spring Security.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39956876
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дада. Это в первую очередь относится к теме топика

Spring Security имеет неверную архитектуру

Тема слишком громкая и вызывающая. Я думаю что ее стоит смягчить.

Этот топик - закрыть. А тебе - поднять новый. По безопасности карточных продуктов.
Насколько я понял это твой основной поинт.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959373
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras,

Кстати, посмотрел мельком код вашего очередного решения
Правильно ли я понимаю:
1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)
2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body
3) Что с проверкой безопасности в случае multipart request?
4) Что с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:)
5) Кеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959771
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

Привет, спасибо за хорошие вопросы.

автор1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)
Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там.
Гуй уже в процессе создания, на Vue.js.

автор2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body
Проверка Body концептуально хитрая задача.
Взять хотя бы Spring ACL - это ужас, и к тому же не все случаи поддерживает (HATEOAS тот же нормально не поддержать).

Поэтому предлагается следующая конвенция:
- Ownership of parent entity проверяется через URL regex, при этом рекомендуется "Myself" approach:
"{chanelName}/videos"

- Ownership of nested entities проверяется через Body regex, но при этом используется только HATEOAS/HAL, т.к. это позволяет избежать нормализации Body и всяких атак на regex.
Т.е. вот так предлагается делать (пишу по памяти):

Код: sql
1.
2.
3.
4.
5.
6.
7.
HTTP 1.1 POST
"/john.doe/videos/15/channel"

Сontent-Type: application/hal+json
Authorization: ....."authorizedCredentials": ["userName":"john.doe"]

/john.doe/channels/3



Где john.doe это authorizedCredential в токене.

И т.о. настройка безопасности:

"urlRegex": "https:\/\/somehost\/someroot\/%username%\/.*"
"bodyRegex": "https:\/\/somehost\/someroot\/%username%\/.*"

Даёт юзеру ключать только свои ресурсы в свои ресурсы.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959774
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто с проверкой безопасности в случае multipart request
bodyRegex работает с прочитанным inputStream.
Но как выше написано, предлагается bodyRegex использовать только с HATEOAS/HAL.

Иначе легко допустить уязвимость в написании regex для JSON или XML.

авторЧто с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:)
Кастомный валидатор нужен будет вместо regex. В реализации которую индусы делали по моим спекам так было сделано.
Я пока это убрал для простоты.

авторКеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос?
Завёл задачу:
https://github.com/INFINITE-TECHNOLOGY/ASCEND/issues/2

Спасибо!
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959864
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
Lelouch,

Привет, спасибо за хорошие вопросы.

автор1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)

Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там.
Гуй уже в процессе создания, на Vue.js.

Нежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL. При этом еще и требуется написать инструкцию для обновления (например, для релизного стенда - "при выкатывании версии 2 сходите в UI и поменяйте URL").

dakeirasПроверка Body концептуально хитрая задача.
Только вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor. Скорее всего есть еще способы, лень искать. У вас - только во внешней системе. И кастомный фильтр не спасает - в таком случае мне необходимо обновлять этот фильтр всякий раз при изменении контракта.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959866
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Мне кажется или это - волшебно?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959867
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL.


в этом весь смысл. Разработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности.

авторТолько вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor.

Повторюсь, Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности.

Это создаёт риск ошибок, вовлекает разработчиков в управление доступом, а также не платформонезависимо и не централизованно.

А также разрывает атомарность авторизационной транзакции, деля её на Аутентификацию (JWT) и будущую Авторизацию по факту каждого обращения к ресурсу. Это приводит к тому, что изменения правил доступа получают Обратную Силу, т.е. аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

Ну и нагружает бизнес предложение, которое вынуждено отрабатывать атаки по доступу, т.к. безопасность смешана с бизнес логикой.

А правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959868
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
P.S. Мне кажется или это - волшебно?


Ну нету гуя пока, уже делаю. Даже Vue.js освоил ради этого.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959878
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
Lelouch
P.S. Мне кажется или это - волшебно?


Ну нету гуя пока, уже делаю. Даже Vue.js освоил ради этого.


Причем тут гуй?
1) Ключ вообще лучше хранить в настройках
2) Для накатывания состояния базы есть liquibase например
3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются

dakeirasА правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры.
И что делать с вашим "решением", если логика работы зависит от прав пользователя?:)

dakeirasРазработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности.
1) Разработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен
2) Что делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:)

dakeiras Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности.
1) Ну то есть вы в этом топике сравниваете апельсин и лопату?
2) @PreAuthorize("isFullyAuthenticated() and @mySecurityBean.hasAccessTo(#objectId)") - не является "автоматизацией проверки доступа в acl"? или имеется в виду, что таки нужно реализовать этот самый mySecurityBean?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959892
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПричем тут гуй?
1) Ключ вообще лучше хранить в настройках
2) Для накатывания состояния базы есть liquibase например
3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются

Это публичный ключ, его без разницы где хранить.

Как только появится гуй, этот класс вообще исчезнет, т.к. настройки будут правится через ГУЙ только.
Зато видно наглядно как настраивается на кокнетных примерах.

авторИ что делать с вашим "решением", если логика работы зависит от прав пользователя?:)

Это неправильная архитектура. Логика не должна зависеть от прав доступа. Т.е. Админ - это не Юзер, совсем. Это - другая сущность и другая identity. И у админа должно быть отдельное админское приложение.

Всё что должно быть - авторизация и step up авторизация. При этом step up не влияет на логику никак - лишь даёт доступ к существующей логике, но не меняет её.
Пример - менюшки. Неправильно делать так:
Код: java
1.
2.
3.
4.
5.
6.
if (user.isAdmin()) {
    showUserMenu();
    showAdminMenu();
} else {
    showUserMenu();
}



Правильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959896
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРазработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен

Логика проверки доступа является частью управления доступом, т.е. разработчик может умышленно сделать backdoor.

авторЧто делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:)
Ascend - система Веб безопасности, поддерживает только протокол HTTP.

авторили имеется в виду, что таки нужно реализовать этот самый mySecurityBean?
Да, имеется в виду реализация логики.

Вообще, давайте на секунду абстрагируемся от Спринга.

Ascend встроенный в Reverse Proxy или в гейтвей платформонезависим, и обеспечивает безопасность любых Веб приложений, например PHP, Python, и т.д.
Достаточно контейнеризовать legacy приложение и спрятать его в частной подсети в контейнере.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

Приведите пример, когда это плохо?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959900
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras,

dakeirasЛогика не должна зависеть от прав доступа.

Логика легко может зависеть от роли пользователя. Вы видимо считаете, что роли безопасности не могут быть частью "бизнес процессов". Это не так.


dakeirasПравильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений.

"Менеджер" в автосалоне может сделать 2 скидки в день, а "старший менеджер" - 10.
Одновременно с этим "менеджер" не может продать машину без одобрения "старшего менеджера".
1) Видимо кто-то из них "админ", а кто-то "юзер"?:)
2) Вы видимо предлагаете реализовать 1 ограничение минуя правовую модель, а второе - в ней? А как у вас можно проверить состояние одобрения?
3) нужно для каждого по отдельному приложению сделать?:)
P.S. Пример выше - выдуманный

У меня ощущение что вы взяли из нормальных SECAAS только 1 функцию - ограничение доступа к ресурсам - и пытаетесь ее продать
githubMonthly:

0-5000 successfully granted authorizations - free
Each extra: $0.01 per each successful authorization grant
Кстати, а что будет, если я защищу что-либо вашей системой, а ее взломают? Сколько вы мне денег в таком случае заплатите?

P.S. А что если у меня приложение с сессиями и url + body ни разу не достаточны для понимания, что делает пользователь?
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959903
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
dakeiras
аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

Приведите пример, когда это плохо?


Вы купили Единый проездной на 1 неделю, он включает:
- Автобус
- Трамвай
- Метро

Но через 3 дня из тарифа убирают Трамвай. Ваш Единый это тоже затрагивает, т.к. он содержит только привязку к тарифу, но не указывает какие конкретно он разрешает виды транспорта.

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

Можно добавить проверку на дату\время конечно, но это костыль в данном случае.
...
Рейтинг: 0 / 0
Spring Security имеет неверную архитектуру
    #39959905
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
mayton
пропущено...

Приведите пример, когда это плохо?


Вы купили Единый проездной на 1 неделю, он включает:
- Автобус
- Трамвай
- Метро

Но через 3 дня из тарифа убирают Трамвай. Ваш Единый это тоже затрагивает, т.к. он содержит только привязку к тарифу, но не указывает какие конкретно он разрешает виды транспорта.

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

Можно добавить проверку на дату\время конечно, но это костыль в данном случае.


Классный пример из сторонней области. Вот вам более релевантный:
1) Злоумышленник узнал мой логин и пароль. Я срочно звоню админу с просьбой срезать мне все права. Злоумышленник продолжает спокойно работать со старым токеном. Прекрасное решение, я считаю.
2) Стажеру Васе случайно дали право на функцию "Achtung!!! Налоговая! Отправить сервер с черной бухгалтерией в космос!!!", но спохватились и через 10 секунд забрали. Но у Васи видимо доступ должен остаться :)
...
Рейтинг: 0 / 0
25 сообщений из 172, страница 2 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security имеет неверную архитектуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]