Мы начинаем цикл статей, в котором рассказываем, с чем придётся столкнуться разработчику при переходе между LTS-версиями Java. В этой статье рассмотрим основные изменения, которые ждут программиста, если он решит перейти с Java 8 на Java 11.
Читать тут🔗
#статья #java
Читать тут
#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
OWASP Top 10 – это одна из главных классификаций веб уязвимостей. В ней представлены 10 обобщенных категорий, каждая из которых агрегирует набор актуальных атак на веб-приложения. А PVS-Studio – это статический анализатор, и Java является одним из поддерживаемых им языков.
Можем ли мы находить потенциальные уязвимости из перечня OWASP Top 10? Да!
На протяжении большого количества времени мы делали так, чтобы PVS-Studio для языка Java умел находить потенциальные уязвимости в большем количестве категорий OWASP Top 10. На данный момент, диагностики анализатора попадают в 9 из 10 её категорий. Среди таковых, возможные SQL-инъекции, Path-Traversal, XSS-инъекции и многое другое.
Взглянуть одним глазком можно в статье "OWASP Top Ten 2021 через простые примеры на Java. И немного про SAST". Но, всегда лучше попробовать самому. Получить пробную лицензию PVS-Studio для своего Java проекта можно по этой ссылке
#java #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
Спешим поделиться интересной ошибкой, которую нашел наш анализатор. В примере ошибка из проекта OpenIDE:
Срабатывание анализатора PVS-Studio: V6050 Class initialization cycle is present. Initialization of 'DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED' appears before the initialization of 'LOG'. UsageType.java 46
Анализатор говорит, что мы имеем дело с циклической зависимостью при инициализации статических полей. Снова не самый очевидный момент, связанный с нюансами языка Java.
Для инициализации поля DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED используется конструктор. А в нём мы обращаемся к логгеру LOG.
Всё дело в том, что поля инициализируются в порядке их объявления. Как вы можете видеть, DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED располагается выше LOG, т.е. инициализируется раньше. Как следствие, LOG на момент исполнения конструктора будет равен null, и при обращении к нему мы столкнёмся с NPE.
Исправление, как и в большинстве случаев выше, будет донельзя простым. Нужно просто разместить объявление LOG выше, чем DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED.
Не совершай такую ошибку в своем проекте! А узнать о других багах из проекта можно по этой ссылке🔗
#java #programming #ошибка
public final class UsageType {
....
public static final UsageType
DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED = new UsageType(
UsageViewBundle.messagePointer(
"usage.type.delegate.to.another.instance.method.parameters.changed"
)
);
private static final Logger LOG = Logger.getInstance(UsageType.class);
public UsageType(@NotNull Supplier<....> nameComputable) {
myNameComputable = nameComputable;
if (ApplicationManager.getApplication().isUnitTestMode()) {
String usageTypeString = myNameComputable.get();
if (usageTypeString.indexOf('{') != -1) {
LOG.error(....);
}
}
}
....
}Срабатывание анализатора PVS-Studio: V6050 Class initialization cycle is present. Initialization of 'DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED' appears before the initialization of 'LOG'. UsageType.java 46
Анализатор говорит, что мы имеем дело с циклической зависимостью при инициализации статических полей. Снова не самый очевидный момент, связанный с нюансами языка Java.
Для инициализации поля DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED используется конструктор. А в нём мы обращаемся к логгеру LOG.
Всё дело в том, что поля инициализируются в порядке их объявления. Как вы можете видеть, DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED располагается выше LOG, т.е. инициализируется раньше. Как следствие, LOG на момент исполнения конструктора будет равен null, и при обращении к нему мы столкнёмся с NPE.
Исправление, как и в большинстве случаев выше, будет донельзя простым. Нужно просто разместить объявление LOG выше, чем DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED.
Не совершай такую ошибку в своем проекте! А узнать о других багах из проекта можно по этой ссылке
#java #programming #ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
OWASP Top 10 2025 — от кода к цепочке поставок: расширение границ безопасности
В статье мы рассмотрели новые категории уязвимостей из обновлённого списка OWASP Top 10 2025 и показали, как некоторые из этих угроз можно выявить с помощью статического анализатора PVS-Studio.
Подробности по ссылке
#article #java #csharp #owasp
В статье мы рассмотрели новые категории уязвимостей из обновлённого списка OWASP Top 10 2025 и показали, как некоторые из этих угроз можно выявить с помощью статического анализатора PVS-Studio.
Подробности по ссылке
OWASP Top 10 — это список десяти наиболее опасных угроз безопасности веб-приложений. Он служит ориентиром для разработчиков, архитекторов и специалистов по информационной безопасности, помогая сосредоточиться на самых критических рисках при создании веб-приложений.
#article #java #csharp #owasp
Интересные срабатывания анализатора в коде open source проекта OpenAPI Generator
Потерянный инкремент, пустое регулярное выражение, странная санитизация строк — всё это и не только мы разбираем в новой статье.
Подробности по ссылке
#java #opensource #статья
Потерянный инкремент, пустое регулярное выражение, странная санитизация строк — всё это и не только мы разбираем в новой статье.
Подробности по ссылке
#java #opensource #статья
Применяем кодогенерацию в Java для решения алгоритмических задач
Часто задачи с деревьями на LeetCode решают "магическим" кодом. Но в энтерпрайзе важны читаемость и поддерживаемость на годы. И что делать, когда ещё и объём задачи такой, что на работу руками ушли бы недели? Разберём, как с этим помогает кодогенерация в новой статье.
Подробности по ссылке 🔗
#java #статья
Часто задачи с деревьями на LeetCode решают "магическим" кодом. Но в энтерпрайзе важны читаемость и поддерживаемость на годы. И что делать, когда ещё и объём задачи такой, что на работу руками ушли бы недели? Разберём, как с этим помогает кодогенерация в новой статье.
Подробности по ссылке 🔗
#java #статья