Я новичок в платформе Java. Мне нужно работать с некоторыми платформами безопасности Java как для настольных приложений, так и для веб-приложений. Теперь мне нужно знать, какие фреймворки я должен изучать для настольного приложения (допустим, для Java SE или Java EE) и для веб-приложения (допустим, для JSP)?
Платформа безопасности Java
Ответы (2)
Я предполагаю, что вы создаете всеобъемлющую архитектуру безопасности, управляющую удаленными подключениями и другими аспектами всей системы. Безопасность настольных приложений и веб-безопасность будут разными, но по-прежнему будут решать многие одни и те же проблемы по-своему.
Вот лишь некоторые из тем, которые следует включить: аутентификация, авторизация и аудит (AAA), безопасность данных при передаче и хранении, неотказуемость, безопасность транспортного уровня, безопасность платформы (например, управление привилегиями платформы).
Двумя наиболее распространенными платформами безопасности Java являются Spring Security и Apache Shiro. Оба они относятся к ряду вышеперечисленных тем, но они являются фреймворками — это означает, что вам нужно определить архитектуру и политики безопасности, а затем настроить/расширить фреймворки в вашем конкретном домене.
Bouncy Castle предоставляет множество готовых криптографических средств, в том числе совместимое расширение криптографии Java (JCE) — оно также совместимо с FIPS 140-2, но не сертифицировано. На тех, кто продает сертифицированные решения, идет совсем другая игра/индустрия.
Вот пример. Допустим, ваше настольное приложение будет использовать смарт-карту с сертификатом X.509 для получения доступа и взаимодействия с веб-приложением. В этом случае у вас есть куча вещей, связанных с безопасностью смарт-карты — PIN-коды, шифрование и т. д. Затем вы можете использовать клиентский сертификат на стороне сервера и поставщика аутентификации X.509 на стороне сервера. У вас даже могут быть некоторые процедуры авторизации на основе отличительного имени, предоставленного в сертификате. Вы найдете доступ к хранилищу доверенных сертификатов, провайдеров аутентификации, контроль доступа на основе ролей и тому подобное в рамках вышеуказанных структур безопасности, но вам нужно собрать их воедино.
Вы также можете ознакомиться с рекомендациями по веб-безопасности в @ OWASP: https://www.owasp.org/index.php/Main_Page
Если вы отвечаете за предоставление решения по безопасности и начинаете с рассмотрения фреймворков, я должен предупредить вас о том, что существует разрыв в обмене знаниями между экспертами/аналитиками по безопасности и разработчиками программного обеспечения, то есть людьми, которые говорят вам о том, как эксплуатировать слабые места, обычно говорят не те люди, которые рассказывают, как настроить Spring Security или использовать JCE API.
Достойной стратегией смягчения последствий является рассмотрение некоторых решений «обертки безопасности», которые по существу создают небольшие анклавы с защищенными/безопасными точками входа в анклав. Примером такого продукта может быть Layer-7, который обычно используется в качестве шлюза безопасности веб-сервисов.
Хорошей охоты!
Доступно несколько фреймворков:
- Весенняя безопасность
- ЯАС
- JBoss Seam Security (http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html_single/#security)
Если вы создаете веб-приложение вместе со Spring, я бы порекомендовал взглянуть на пакет Spring Security, поскольку он прекрасно интегрируется в другую среду Spring. Также у JBoss Seam есть несколько интересных подходов.
Также некоторые связанные ссылки stackoverflow:
И, конечно же: