Rate this post

Неочікувана знахідка у світі безпеки

Кілька тижнів тому обговорення однієї вразливості безпеки в .NET переросло у своєрідну подорож у минуле. У результаті була знайдена несподівана річ — книга The Developer Highway Code, яка роками перебувала на видноті, але залишалася поза увагою.

Книга була опублікована у 2006 році за участі Microsoft UK і замислювалася як практичний посібник зі створення більш безпечних .NET‑застосунків. Попри свій вік, багато ідей, викладених у ній, залишаються дивовижно актуальними й сьогодні.

Що таке The Developer Highway Code

Підзаголовок книги — The Drive for Safer Coding («Курс на безпечне програмування»). Вона має на меті навчити розробників принципів безпечної інженерії програмного забезпечення за допомогою зрозумілих пояснень, структурованих чек-листів і навіть гумору.

У книзі розглядається широкий спектр тем — від мережевої інфраструктури до доступу до баз даних — на прикладі платформи .NET. Окремої уваги заслуговує стиль подачі: серйозні рекомендації з безпеки поєднуються з іронічними застереженнями та наочними метафорами, що робить матеріал більш запам’ятовуваним. Хоча деякі жарти сьогодні виглядають застарілими, вони додають книзі характеру.

Структура та основні розділи

Книга складається з двох великих частин:

  • Частина перша: безпечна інженерія — принципи, концепції та можливості платформи
  • Частина друга: чек-листи та списки запитань — практичні кроки для перевірки безпеки на різних рівнях

Хоча згадки про .NET Framework 1.1 сьогодні виглядають архаїчними, матеріали, присвячені .NET 2.0, у свій час стали важливим кроком уперед у сфері безпечної розробки.

Безпека мережі та інфраструктури

Однією з найсильніших сторін книги є детальні чек-листи. Зокрема, в ній рекомендується:

  • встановлювати останні оновлення безпеки;
  • підписуватися на повідомлення виробників про виявлені вразливості;
  • блокувати завідомо вразливі порти;
  • увімкнути фільтрацію вхідного та вихідного трафіку;
  • перевіряти ICMP-трафік;
  • надійно захищати адміністративні інтерфейси маршрутизаторів;
  • вимикати невикористовувані сервіси, такі як TFTP (Trivial File Transfer Protocol).

Навіть через десятиліття ці рекомендації залишаються основою правильної мережевої гігієни безпеки.

Захист від SQL-інʼєкцій

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

  • використовувати збережені процедури з параметрами;
  • за відсутності збережених процедур застосовувати строго типізовані SQL-параметри;
  • підключатися до бази даних з обліковими записами з мінімально необхідними правами.

Дивує, наскільки мало змінилися ці базові принципи за минулі роки.

Що нового принесла .NET 2.0

На момент виходу книги .NET 2.0 запропонувала низку важливих покращень у сфері безпеки:

  • програмне керування списками контролю доступу (ACL) з керованого коду;
  • налаштування MachineKey для узгодженого шифрування та автентифікації;
  • ClickOnce із пісочницею для виконання Windows Forms-застосунків;
  • Code Access Security (CAS) для обмеження прав коду;
  • класи ConnectionStringBuilder для безпечнішої роботи зі строками підключення;
  • SecureString для захисту конфіденційних даних у памʼяті.

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

Безпека на рівні застосунків

У книзі детально описуються практики валідації даних і захисту застосунків:

  • перевірка вхідних даних за допомогою регулярних виразів;
  • використання вбудованих валідаторів ASP.NET;
  • повна відмова від довіри до користувацького вводу;
  • за можливості — відмова від динамічних SQL-запитів;
  • перевірка всіх недовірених даних на рівні доступу до даних.

Попри те що приклади належать до епохи до MVC та сучасних фреймворків, сам підхід до безпеки залишається актуальним.

Рекомендації з проєктування класів

Особливу увагу приділено обʼєктно-орієнтованому дизайну:

  • використовувати максимально обмежувальні модифікатори доступу;
  • закривати (sealed) базові класи, не призначені для наслідування;
  • зберігати поля приватними та надавати доступ через властивості;
  • робити властивості лише для читання, якщо запис не потрібен;
  • застосовувати сувору ідентифікацію збірок і механізми прозорості безпеки за потреби.

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

Безпека передавання даних

Автори рекомендують:

  • використовувати шифрування транспортного рівня для захисту секретів;
  • застосовувати IPSec для взаємодії між серверами;
  • використовувати SSL для захисту каналів на рівні застосунків.

Хоча термінологія змінилася і сьогодні використовується TLS, сама ідея захисту даних під час передавання залишається незмінною.

Корисна подорож у минуле

Повернення до The Developer Highway Code — це водночас ностальгія й нагадування про те, що основи безпеки майже не змінюються з часом.

Авторами книги є Філ Вінстанлі, технічний євангеліст Microsoft UK, та Алекс Макман, головний технолог компанії CM Group Limited. Їхня робота залишається цінним історичним зрізом поглядів на безпеку .NET середини 2000‑х років.

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