JavaRush /Java блог /Random UA /Кава-брейк #35. Як дотримуватись правил безпеки на GitHub...

Кава-брейк #35. Як дотримуватись правил безпеки на GitHub. Корисні поради щодо швидкого налагодження Java-коду

Стаття з групи Random UA

Як дотримуватись правил безпеки на GitHub

Джерело: DZone GitHub заслужено вважається найпопулярнішою платформою командної розробки. За даними минулої осені, цим сервісом користувалося понад 40 мільйонів програмістів. І оскільки більшість із них при створенні софту використовує відкритий код, безпека при роботі на Github має бути вашим головним пріоритетом. Повторне застосування коду збільшує ризик поширення вразливостей. Отже, кожен користувач GitHub повинен приділяти максимум уваги створенню безпечного середовища розробки. Кава-брейк #35.  Як дотримуватись правил безпеки на GitHub.  Поради щодо швидкого налагодження Java-коду - 1Існує 8 правил, яким необхідно слідувати, щоб ваш код у GitHub був у безпеці.

Забезпечте контроль доступу

Контроль доступу - один з найкращих способів підвищити безпеку не тільки на GitHub, але і в будь-якому іншому середовищі, де потрібний захист коду. GitHub пропонує кілька способів зменшити ризики в роботі. Насамперед, візьміть за правило надавати найменші привілеї — виділяйте користувачам репозиторія лише ті дозволи, які їм необхідні виконання роботи. Існують інші методи контролю доступу, яким ви повинні дотримуватися:
  • обмежте створення сховищ, щоб користувачі не могли розкривати інформацію про організацію у загальнодоступних репозиторіях;
  • увімкніть захист гілок та перевірки стану, щоб користувачі могли об'єднувати комміти або безпечно керувати гілками;
  • дозвольте або забороніть розгалуження приватних репозиторіїв, щоб гарантувати, що користувачі не будуть розкривати або передавати ваш код стороннім особам;
  • скасуйте доступ для всіх неактивних користувачів, які більше не є учасниками вашої спільноти чи співробітниками компанії;
  • періодично перевіряйте права доступу до ваших проектів на GitHub;
  • переконайтеся, що користувачі не діляться з іншими доступами до облікового запису GitHub або паролями;
  • переконайтеся, що кожен користувач репозиторію використовує двофакторну автентифікацію у своєму обліковому записі;
  • періодично змінюйте персональні токени доступу та ключі SSH.

Ніколи не зберігайте дані доступу у файлух GitHub

Витік інформації про доступ до вашого репозиторію GitHub через код, конфігураційні файли або повідомлення коммітів можуть використовувати для атак. Щоб запобігти додаванню конфіденційних даних до вашого репозиторію, використовуйте інструменти керування доступом — git-secrets або vault . Ці інструменти сканують базу коду та змінюють доступ до неї щоразу, коли у вашому коді або файлух конфігурації виявляється конфіденційна інформація. Якщо ви знайшли конфіденційну інформацію у своєму репозиторії GitHub, ви повинні негайно видалити її. Але оскільки GitHub зберігає історію всіх коммітів у репозиторії, одного видалення даних недостатньо. Вам потрібно буде видалити файли з історії вашого репозиторію GitHub. Важливим кроком для підвищення безпеки стане заміна всіх паролів та токенів, які раніше з'являлися у відкритому доступі.

Увімкніть оповіщення для вразливих залежностей

Оскільки користувачі GitHub працюють над великою кількістю проектів, стає все важче контролювати кількість залежних об'єктів, що зростає. На щастя, GitHub надає автоматичні оповіщення для вразливих залежностей , виявлених у репозиторії. Ці попередження засновані на Національній базі даних уразливостей (NVD), GitHub Security Advisories та базі даних уразливостей WhiteSource, яка підтримує більш ніж 200 мов програмування. Завдяки оповіщенням GitHub вам стане простіше та безпечніше використовувати бібліотеки з відкритим вихідним кодом.

Перевіряйте додатки з GitHub

GitHub Marketplace містить сотні додатків, написаних сторонніми розробниками та компаніями. Тому важливо ретельно перевіряти кожну програму, яку ви додаєте до свого репозиторію. При встановленні програм з GitHub Marketplace дотримуйтесь таких правил:
  • забезпечте дотримання принципу найменших привілеїв. Ніколи не надайте програмам більше прав доступу, ніж їм потрібно;
  • завжди ставте під сумнів права доступу або дозволу, що запитуються додатком. Подумайте про те, яку шкоду це може завдати за такого рівня доступу;
  • перевірте інформацію, що компанія або розробник програми реально існують, перш ніж надати їм доступ до свого репозиторію на GitHub;
  • перевірте функції та безпеку програми. Якщо в ньому є вразливі, ви можете стати жертвою злому;
Безпека програми оцінюється за його найслабшою частиною. Це стосується і репозиторій GitHub. Тому, перш ніж надавати додатку доступ до свого сховища, переконайтеся, що ви довіряєте йому, і що він відповідає тому рівню доступу, який запитує.

Перевіряйте весь імпортований з GitHub код

Розробники часто використовують чужий код. Щоразу, коли ви копіюєте частину чужого коду у свій проект, провадіть його повну перевірку. Може здатися, що це зайва трата часу, особливо для невеликих проектів, але є ймовірність, що нехтуючи цим правилом, ви внесете до свого репозиторію вразливість. Ще один ризик, пов'язаний з імпортованим кодом, полягає в тому, що він може містити конфіденційну інформацію, таку як дані доступу. Якщо вони зберігаються у файлух GitHub, це створює ще одну загрозу безпеці. Аудит коду перед його копіюванням допомагає виявити подібні лазівки. Не сподівайтеся, що чужий код безпечний, оскільки він перебував у закритому репозиторії. Він цілком може завдати шкоди вашій кодовій базі.

Використовуйте автоматичний статичний аналіз вихідного коду для ваших репозиторіїв

Існує кілька сторонніх інструментів, які ви можете використовувати для аналізу репозиторію на наявність вразливостей. Одним з них є WhiteSource Bolt – безкоштовний інструмент із GitHub Marketplace. WhiteSource Bolt сканує ваші репозиторії на наявність уразливостей у всіх відкритих частинах коду. Він також надає детальну інформацію про вразливість та пропонує варіанти виправлення.

Використовуйте тариф GitHub, який відповідає вашим потребам

У багатьох компаніях є правила, які забороняють розробникам розміщувати код на таких платформах, як GitHub. Ці обмеження особливо поширені у державних відомствах та фінансових установах. Якщо ви працюєте в жорстко регламентованому середовищі, використовуйте GitHub Enterprise - корпоративний тариф, який дозволяє розміщувати репозиторії на локальному сервері. Це забезпечує більш високий рівень безпеки, оскільки дозволяє розробникам компанії мати доступ до всіх проектів, не переймаючись сторонніми користувачами GitHub.

Дотримуйтесь у своїх проектах всебічної політики безпеки

Безпека – це колективна відповідальність. Якщо ви працюєте в команді, важливо ввести правила безпеки, які повинні виконувати всі зацікавлені сторони. В ідеалі ви повинні об'єднати команди кібербезпеки та розробки на етапі планування, щоб забезпечити їхню синхронну роботу. Так буде простіше забезпечити захист у процесі розробки. Якщо один із членів вашої команди безтурботно ставиться до зберігання паролів або іншої конфіденційної інформації, це може загрожувати весь репозиторій. Щоб уникнути цього, чітко задокументуйте процедуру безпеки, яку повинні виконувати всі ваші колеги.

Висновок

Захистити код на GitHub дуже просто. Потрібно лише забезпечити правильний контроль доступу за допомогою переваг вбудованих функцій безпеки GitHub. Якщо ж ви зацікавлені у максимальному захисті, інтегруйте додаткові інструменти, які підвищать безпеку коду на всіх етапах розробки. Також рекомендується переглянути розділи документації з безпеки GitHub для бізнесу та безкоштовних користувачів . Так ви зможете отримати додаткову інформацію про безпеку та захист коду.

Корисні поради щодо швидкого налагодження Java-коду

Джерело: Hackernoon Крім написання ефективного коду, прокачування себе в його налагодженні - одна з найкорисніших дій для полегшення життя Java-розробника. Особливо це важливо в сучасних умовах розробки софту, де світ програмного забезпечення активно переходить до розподілених архітектур та асинхронного коду. Кава-брейк #35.  Як дотримуватись правил безпеки на GitHub.  Поради щодо швидкого налагодження Java-коду - 2Хоча програмні помилки неминучі, виявляти та виправляти їх у складних збірках стає все важче. А при переході до етапу випуску продукту процес налагодження стає ще серйознішою проблемою. На жаль, немає ніякого способу уникнути цього – налагодження необхідне. Щоб допомогти, я вирішив поділитися кількома корисними порадами з налагодження Java-додатків на різних етапах розробки.

Використовуйте контрольні точки

Почнемо з контрольних точок - очевидного, але дуже важливого моменту, який лежить в основі будь-якого процесу налагодження. Контрольні точки дозволяють зупинити виконання програми, щоб ви могли проаналізувати стан програми та з'ясувати, чому код працює неправильно. Кожен відладчик пропонує кілька варіантів контрольних точок, включаючи умовні точки, точки зупинки винятків, точки спостереження та трасування. Вивчення того, як і коли застосовувати різні типи контрольних точок дозволяє зробити процес налагодження більш плавним. Варто згадати, що деякі сучасні інструменти підтримують контрольні точки без переривання роботи програми. Це дає можливість встановлювати точки у вашому коді та збирати дані налагодження, не зупиняючи виконання програми.

Показуйте логічну структуру

Функція «показати логічну структуру» (show logical structure) дуже корисна під час моніторингу вмісту у класах Java. Якщо цю функцію увімкнено, список змінних показує масив, який набагато корисніший у контексті налагодження. Це дуже зручно, особливо якщо у вашому коді відсутні методи toString() для об'єктів. Подання змінних також дозволяє безпосередньо змінювати значення ваших змінних під час налагодження. Це може заощадити значну кількість часу, оскільки не доведеться перезапускати сеанс налагодження зі зміненими вхідними даними.

Навчіться навігації по кодовій базі

Будь-який наладчик Java може використовувати кілька функцій, які дозволяють під час налагодження переміщатися різними розділами коду. Деякі з них включають "run to line", "step over", "step into" і "step into". На додаток до них розгляньте можливості ще двох:
  1. Drop to frame — ця функція використовується для повернення до точки у фреймі стека. Якщо ви пропустабо якусь точку і потрібно повернутися назад, просто використовуйте функцію Drop to frame.
  2. Покрокова фільтрація (Step filtering) дозволяють пропускати певні пакети під час налагодження. Вам не потрібно переміщатися по всіх класах JDK, коли ви можете просто відфільтрувати типи, які вам не потрібні.
Щоб підвищити швидкість навігації за кодом, вам потрібно освоїти поєднання функціональних клавіш:
  • F5 - для "stepping into".
  • F6 - для "stepping over".
  • F7 - для "step return".
  • F8 – для запуску до наступної контрольної точки.
Хоча гарячі клавіші можуть відрізнятися в різних IDE, якщо ви їх запам'ятаєте, це позбавить вас необхідності більш частого використання миші.

Навчіться уникати взаємного блокування (Deadlocks)

Сценарій взаємного блокування виникає, коли два чи більше потоків блокуються після формування циклічної залежності. Оскільки набір потоків Java зазвичай очікує на інший ресурс, це може призвести до повної зупинки програми. Налагодження взаємоблокувань jstack може бути досить складним, оскільки вони не виявляють таких індикаторів проблем, як різкий стрибок пам'яті, навантаження процесора і т.д. Існують різні підходи до усунення несправностей у ситуації взаємоблокування jstack. По-перше, ви можете захопити кілька дампів потоків у вашому кластері JVM, щоб вивести шаблони потоків. І тут аналізу статичного дампа потоку може бути недостатньо. Залежно від розміру кластера JVM може знадобитися захоплення тралом декількох файлів, що часто буває трудомістким та тривалим процесом. Найкраще використовувати рішення для моніторингу додатків, яке забезпечує рівень JV та рівень коду, необхідні для ізоляції потоків взаємоблокувань. На щастя, існують інноваційні інструменти, які можуть допомогти в цій ситуації, включаючи деякі сучасні відладчики, а також комерційні APM-інструменти. Ці інструменти підвищують прозорість вашого Java-коду в процесі виявлення помилок.

Використовуйте можливості виробничих налагоджувачів

Типовий процес налагодження, якому зазвичай слідує більшість розробників, включає реплікацію середовища, ізоляцію помилки, а потім виправлення. Однак це застосовно не для всіх випадків. Якщо виникла така ситуація, розробнику слід використовувати потужні виробничі відладчики. Rookout – один із таких інструментів. Він дозволяє збирати налагоджувальні дані з програм без зміни його стану або керування потоком. З Rookout ви можете встановлювати нерозривні контрольні точки для отримання повного трасування стека, перехоплення змінних, що діють, або будь-яких інших даних програми, необхідні для налагодження. Таким чином, замість використання рішень з моніторингу з високим навантаженням для виробничого налагодження просто використовуйте Rookout, який надає все необхідне для налагодження програм без повторного розгортання або написання нового коду. Чи працюєте ви над серверними або контейнерними програмами, Rookout стане чудовим доповненням до вашого налагоджувального арсеналу.

Не забувайте про віддалену налагодження

Переважна більшість IDE, таких як NetBeans, Eclipse, IntelliJ IDEA та Visual Studio, підтримують віддалену налагодження - метод, який дозволяє виправляти код Java, що знаходиться на іншому комп'ютері. Це особливо важливо в ситуаціях, коли ваша система не підтримує локальне налагодження або коли на комп'ютері недостатньо ресурсів для запуску налагоджувачів. Щоб виконати віддалену налагодження, ви повинні надати відомості про конфігурацію, які налаштовувач використовуватиме для підключення до віддаленого порту. Віддалена налагодження також корисна при усуненні помилок в умовах, коли розробникам, які знаходяться поза офісом, необхідно підключитися до програми для виправлення помилки. Пам'ятайте, іноді налагодження може займати більше часу, ніж фактична реалізація. Оскільки ви відточуєте свої навички налагодження Java, завжди прагнете писати чистий, ефективний код - це окупається, коли справа доходить до виправлення багів. Якщо вам здається, що ситуація виходить з-під контролю, завжди варто зробити перерву. Помилка - це головоломка для програмування, і багато програмістів зуміли вирішити цю проблему, не перебуваючи поряд зі своїм комп'ютером. Використовуйте стратегії, описані вище, щоб позбавитися проблем із налагодженням Java. Вдалого кодингу!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ