Другое

Безопасность Java: подробный обзор встроенного функционала Явы

Lorem ipsum dolor

Безопасность в Java стоит на первом месте. Благодаря этому свойству язык Java очень популярен при написании приложений разного рода, особенно когда дело касается высоконагруженных бизнес-приложений, которые будут взаимодействовать с большим количеством пользователей, а также осуществлять какие-то финансовые операции.

Общая безопасность приложения достигается различными инструментами и подходами, но некоторая часть этих «инструментов» уже встроена в структуру самого языка Java, например:

  • модификатор доступа,

  • загрузчик классов,

  • организация дополнительных услуг в приложении силами языка: шифрование данных, защищенная связь, аутентификация, авторизация и др.

 

Безопасность Java

Как мы уже отметили, сам по себе язык программирования Java имеет встроенные свойства, которые отвечают за безопасность вашего приложения. Благодаря им на Java можно писать безопасный код и пользоваться этими свойствами по умолчанию:

  1. Статическая типизация данных. Java — это язык программирования со строгой статической типизацией. Это свойство дает возможность обнаруживать ошибки, связанные с типами данных, прямо во время выполнения программы.

  2. Модификатор доступа. Внутри Java встроено множество различных модификаторов, которые позволяют очень гибко настраивать доступ к чему угодно: классам, методам или полям классов.

  3. Автоматизированное управление памятью. Это свойство облегчает труд разработчиков за счет того, что не нужно управлять памятью «вручную», но самое главное в Java есть встроенные «сборщики мусора», которые в автоматическом режиме высвобождают память от мусора.

  4. Контроль байт-кода. Программы на Java всегда компилируются в байт-код, который постоянно проверяется перед запуском.

  5. И др.

Но то, что безопасность в Java заложена в некоторых свойствах языках, еще не означает, что у вас получится безопасное приложение на этом языке, потому что писать безопасный код на Java нужно еще уметь. Для этого компания Oracle разработала подробную документацию со множеством рекомендаций. Чтение такой документации — это довольно скучное занятие, поэтому мы подготовили небольшую «выжимку» рекомендаций.

 

Безопасность Java: рекомендации от Oracle

Да, Java обладает определенными свойствами, чтобы сделать вашу разработку безопасной, однако в это же время Java обладает определенным набором уязвимостей, которые могут скомпрометировать вашу разработку. Поэтому ответственность за безопасность вашего приложения лежит не на языке Java, а на разработчике, который его программирует.

Чтобы свести к минимуму уязвимости Java-приложения, компания Oracle выпустила свод рекомендаций для разработчиков. Вот некоторые из них:

  1. Изначально разрабатывайте API-интерфейсы с учетом безопасности.

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

  3. Используйте ограничение привилегий к классам и методам.

  4. Устанавливайте границы доверия. Например, браузер не находится в одной системе с сервером приложения, так же как и сервер не находится в одной системе с браузером. А это значит, что работа должна быть организована таким образом, чтобы ни браузер, ни сервер не зависели от поведения друг друга.

  5. Используйте безопасный сторонний код. Это касается библиотек, фреймворков и другого программного обеспечения «со стороны», которое вы планируете использовать в своей разработке. Важно отслеживать, поддерживаются ли эти инструменты разработчиком, вовремя ли они обновляются, имеют ли большее количество уязвимостей и т. д. Если вы используете незащищенный инструмент, то это в первую очередь подрывает безопасность вашей разработки.

  6. Не допускайте действий, которые будут использовать большие ресурсы «железа». Например: графику большого размера, «ZIP-“бомбы“», большое количество регулярных выражений, бесконечные циклы, обработку JAR из ненадежных источников.

  7. Освобождать ресурсы. Хотя в Java присутствует автоматическое высвобождение ресурсов памяти, все равно часть объектов может быть под «ручным» управлением в виде исключений. Не нужно забывать про такие объекты, так как они могут потреблять большое количество ресурсов. 

  8. Нужно всегда удалять конфиденциальную информацию из исключений.

  9. Нужно избегать применения динамического SQL.

  10. Нужно осторожней и после тщательной обработки включать различные данные в HTML и XML, чтобы исключить межсайтовый скриптинг (XSS).

  11. Создавайте песочницы для запуска кода, полученного из ненадежных источников.

  12. Нужно избегать сериализации классов, которые чувствительны к безопасности.

  13. И др.

 

Заключение

Чтобы поддерживать должную безопасность вашего Java-приложения, нужно приложить немало собственных усилий, а не надеяться только на внутренние свойства самого Java. Все, что заложено для безопасности внутри самого языка, — это всего лишь инструменты. А воспользуется ли ими разработчик — это целиком и полностью лежит под ответственностью самого разработчика.

Схожие статьи

Как производятся разработки программного обеспечения по аутсорсингу
Другое

Как производятся разработки программного обеспечения по аутсорсингу

Опыт работы in-house: что это такое и в чем преимущества такого опыта?
Другое

Опыт работы in-house: что это такое и в чем преимущества такого опыта?

TBD — что это такое? Магистральная разработка программ для ПК
Другое

TBD — что это такое? Магистральная разработка программ для ПК

Интервью с программистом: насколько сложно стать разработчиком ПО?
Другое

Интервью с программистом: насколько сложно стать разработчиком ПО?