Legal Code
639 subscribers
1 file
87 links
Навчання програмуванню. Вирішення юридичних задач за допомогою IT-навичок. Технічний світогляд юриста.

Рекламу не пропонувати :)
Download Telegram
🏃‍♂️ ПРОГРАМУВАННЯ І ПОСПІХ

Розробнику нині часто доводиться писати код нашвидкуруч і пошвидше запускати його в роботу (продакшн). У цієї поспішності можуть бути різні причини.

Наприклад, швидкість від розробника може вимагати бізнес, щоб IT-продукт (чи окремі фічі) виводився на ринок швидше, щоб обігнати конкурентів, закріпитися у ніші (важливо для стартапів), збільшити прибутки, тощо. В окремих галузях це дозволяє в лічені дні отримувати мільйонні доходи, наприклад у геймдеві, коли з’являється черговий хайповий жанр мобільної гри, який геймдев-студії починають масово копіювати, намагаючись урвати кусень побільше. Тобто працює ця банальщина:
час = гроші,
швидко програмуєш = швидко заробляєш.

Інколи причиною поспіху може бути бажання розробника швидше здати проєкт, щоб взятися за новий (більш цікавий або перспективний) чи щоб отримати премію за швидкість, гарну оцінку на perfomance review з подальшим підвищенням, гарну оцінку від замовника на фріланс-біржі, тощо.

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

Але незалежно від зовнішніх і внутрішніх причин, поспіх у програмуванні має одні й ті ж своєрідні наслідки. Розділю їх на умовні блоки:

💎 ЯКІСТЬ ПРОДУКТУ ДЛЯ КОРИСТУВАЧА

🏯 АРХІТЕКТУРА (якість продукту з точки зору розробника)

🔐 [КІБЕР] БЕЗПЕКА

І почну з того, значимість чого перестають недооцінювати зазвичай вже тоді, коли грянув грім. Вже завтра 😊
🏃‍♂️ ПОСПІХ І ПРОГРАМУВАННЯ: [КІБЕР]БЕЗПЕКА 🔐
Виділю два аспекти поспіху: гівняний і залежнісний.

1️⃣ Говнокод і говнопрактики

Якщо ви швидко пишете код, поверхово його перевіряєте і на це накладається низька культура тестування у вашій команді, ви можете сформувати якусь вразливість вашої системи. Ось деякі приклади:

▪️ сторінка сайту, яка призначена лише для адміністраторів, але буде відкриватися і у звичайних користувачів чи взагалі у неавторизованих відвідувачів;
▪️ ділянка API, що видає конфіденційні дані, не вимагаючи валідного токену (ключа, паролю, сесії);
▪️ код, який пропускає SQL-ін’єкції у вашу базу даних чи допускає несанкціоновані сценарії взаємодії (що дозволяє або вщент знищити вашу базу даних, або викачати її, або інколи навіть авторизуватися на сайті як адміністратор чи інший користувач);
▪️ ділянка коду чи криво налаштований сервер, що за деякої комбінації вхідних даних поводить себе неадекватно, видає зайву інформацію про вашу систему, даючи важливі підказки для продовження атаки;
▪️ код, що пропускає XSS-атаки на якусь зі сторінок вашого сайту;
▪️ ви не заморочилися з валідацією даних, які надходять ззовні, і хтось зміг розташувати і виконати свій код у вашій системі;
▪️ ви не заморочилися з шифруванням і почали зберігати паролі чи чутливі персональні дані користувачів у незашифрованому вигляді (а потім стажер, якому ви дали доступ до бази даних, її скачує і продає в даркнеті);
▪️ ви "для зручності" помістили якісь логіни/паролі/ключі чи цілі інструкції по використанню в коментарях до коду, потім забули видалити, немов ті анекдотичні лікарі з ножицями (далі цей код може різними шляхами потрапити у відкритий репозиторій в мережу, той проіндексується гуглом, і понєслась).

2️⃣ Залежності

Для пришвидшення розробки є різні інструменти. Зокрема, це різні бібліотеки, фреймворки, CMS-системи, CRM-системи, які дозволяють використовувати чужий стандартизований код, щоб не створювати "свої велосипеди". В IT-галузі культивується мода на використання готових рішень. І це можна зрозуміти, бо, мовляв, навіщо вчергове кодити свій механізм авторизації користувача на сайті і купу інших банальних речей, коли можна скористатися готовим надійним механізмом у популярному фреймворці. Чи навіщо писати з нуля свою нейромережу, коли можна скористатися популярною математичною бібліотекою, яка зніме з вас купу нецікавого рутинного головняку.

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

Однак у чужих готових IT-рішеннях (далі — софт) іноді виявляються різні вразливості, і автори софту такі вразливості протягом якогось часу прибирають, викладаючи його оновлену версію. Але щоб ця вразливість зникла у вашому сайті, побудованому на цьому софті, вам необхідно оновитися до цієї останньої версії (або ж випилювати її вручну, але це шлях "на любителя"). І от тут у вас може виникнути проблема, якщо ви давно не оновлювалися.

Ви можете з’ясувати, що нова версія софту вимагатиме від вас переписування деяких ділянок вашої системи, інакше вони поламаються. Ви як програміст розумієте, що від вашої команди така адаптація вимагатиме, скажімо, 2 тижні. Однак у вашого керівника (чи замовника), якщо він не фанат кібербезпеки, ці 2 тижні будуть асоціюватися з 2 тижнями простою, бо ви фактично не створите нічого нового, не викотите нову фічу (функцію), не створите інфоприводів для аудиторії тощо.

І ось тут починається драма: керівник вам скаже "давай пізніше до цього повернемося, зараз у нас є важливіші задачі". І ви кодите далі нові фічі, а ваша система продовжує жити з вразливою "діркою". Кодова база збільшується, вже розроблені фічі вимагають якоїсь підтримки і розвитку, а на підході нові й нові фічі, і у цьому пекельному вихорі роботи ви вже й забуваєте про ту свою дірку, в яку одного дня може проникнути "миша"…

Висновки нижче.
Legal Code
🏃‍♂️ ПОСПІХ І ПРОГРАМУВАННЯ: [КІБЕР]БЕЗПЕКА 🔐 Виділю два аспекти поспіху: гівняний і залежнісний. 1️⃣ Говнокод і говнопрактики Якщо ви швидко пишете код, поверхово його перевіряєте і на це накладається низька культура тестування у вашій команді, ви можете…
⬆️ Висновки

🔸 Ви можете писати код швидко, є така практика і філософія. Але виділяйте час на його перевірку, ретельно тестуйте. А краще давайте тестувати ваш код/продукт тим, хто це вміє робити. Бажано, щоб професійні тестери були у штаті вашої команди (зрозуміло, що не завжди є ресурс на таку розкіш).

🔸 Ваш керівник/клієнт може не розбиратися в кібербезпеці, але хтось у команді повинен розбиратися, мати доступ до ревізії коду (peer review) і мати вплив на процес розробки. Автор коду дуже часто може не помітити вразливе місце. Добре би мати в команді повноцінного кіберспеціаліста чи хоча б періодично показувати йому свій код.

🔸 Якщо ви використовуєте деякий фреймворк, CMS-систему, CRM-систему тощо, намагайтесь слідкувати за новинами про ці продукти, щоб якомога раніше дізнатися про вразливості, коли про них почнуть писати публічно.

🔸 Якщо ви знайшли вразливості у вашому коді чи у використаних залежностях, то займайтеся вразливостями, а не відкладайте на потім. Внаслідок зламу вашої системи втрати можуть бути значно страшнішими, ніж неотримані премії за зірвані дедлайни. Доводьте до відома керівників/клієнтів суть загроз, намагайтесь "вибити час" на їх усунення.

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

Маєте ще ідеї? Пишіть в коментарях)
РФ напала на Україну, майже як Гітлер в 1941-му.

Але зовсім не так успішно.

"Загарбники" несуть очікувані втрати. Вже збито чимало їхнього літаючого металобрухту. "Прожарка" танків пішла повним ходом.

Не панікуйте. В мережі шириться ДУЖЕ багато фейків. Фільтруйте, як боженьки. Бо завдяки Інтернету війна, паніка і дезінформація поширюється в головах швидше, ніж їхні срані ракети.

Вони воювати не вміють. Лише п*здіти і п*здити своїх громадян на мітингах. Бліцкригу немає і ВЖЕ НЕ БУДЕ.

НЕ фотографуйте, НЕ знімайте, НЕ описуйте, НЕ викладайте в мережу переміщення, маневри, дії і розташування наших військ, техніки, літаків, окремих військових і т.п.

Будьте розумно обачні та холоднокровні. Ваша емоційна стабільність і розсудливість — міцний вклад в їхню ганебну поразку.

Ми — нація з міцним осердям. І з нами цивілізований світ, а не купка анально зондованих диктаторів.

Україна ❤️

P.S. Про поспіх і архітектуру коду у поговоримо трохи згодом :)

* * *


РФ напала на Украину, почти как Гитлер в 1941-м.

Но совсем не так успешно.

"Завоеватели" несут ожидаемые потери. Уже сбито немало их летавшего металлолома. "Прожарка" танков пошла полным ходом.

Не паникуйте. В сети распространяется ОЧЕНЬ много фейков. Фильтруйте, как боженьки. Ведь благодаря Интернету война, паника и дезинформация распространяется в головах быстрее, чем их сраные ракеты.

Они воевать не умеют. Лишь п*здеть и п*здить своих граждан на митингах. Блицкрига не было и УЖЕ НЕ БУДЕТ.

НЕ фотографируйте, НЕ снимайте, НЕ описывайте, НЕ выкладывайте в сеть перемещения, манёвры, действия и расположение наших войск, техники, самолётов, отдельных военных и т.п.

Будьте разумно бдительны и хладнокровны. Ваша эмоциональная стабильность и рассудительность — крепкий вклад в их позорное поражение.

Мы — нация с крепким стержнем. И с нами цивилизованный мир, а не кучка анально зондированных диктаторов.

Украина ❤️
⚠️ В інфопростір можуть залітати фейки, ніби Україна здалася і підписала якісь документи.

Але це не так і цього не буде.

Україна міцна, мотивована і цивілізований світ з нами. Нашого Президента вже порівнюють з Брюсом Віллісом.

Росія не зможе виграти цю війну, поки наші громадяни палять їхні танки і БТРи ганчірками. Ганчірками, Карл!

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

Ось приклади деяких офіційних джерел:
Президент України: https://t.me/V_Zelenskiy_official
Служба безпеки України: https://t.me/SBUkr
Нацполіція: https://t.me/UA_National_Police

Ось корисний сайт по темі війни, його підняла людина, яку я особисто знаю:
🔸 https://resist.in.ua

Якщо ви не знаєте, як допомогти зараз Україні, можете почати з цієї сторінки:
https://resist.in.ua/#/tasks