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

Ось 10 найкращих практик безпечного програмування на Python, яких розробникам варто дотримуватися, щоб мінімізувати вразливості.

Частіше оновлюйте версію Python

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

Будьте обережні під час обміну

Коли розробник отримує проєкт із ресурсу спільноти Python Package Index (PyPI), є ймовірність, що він містить вразливості та помилки. PyPI дає супроводжувачам пакетів змогу підписувати свої матеріали, щоб користувачі могли перевірити цілісність завантаження. Однак той факт, що пакети в PyPI не проходять перевірку безпеки, має насторожувати.

Переконайтеся, що вхідні дані санітизовано

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

Використовуйте підготовлені оператори

Бази даних, що підтримують використання підготовлених операторів, можуть захистити програмне забезпечення від зовнішніх загроз, як-от SQL-ін’єкції. А з такими базами даних, як MySQL і MS SQL, це може підвищити продуктивність, якщо підготовлені SQL-оператори використовуються повторно. У Python ці оператори можна використовувати, навіть якщо він їх не підтримує. Використання підготовлених запитів допомагає розрізняти дані, надані користувачем, і SQL-запити, а отже, запобігає несанкціонованій зміні SQL-запитів.

Перейдіть на віртуальне середовище для програмування на Python

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

Не діліться своїми секретами

Жорстке правило тут таке: не дозволяйте Інтернету зберігати важливу інформацію, яку ви кодуєте у свій файл — навмисно чи ненавмисно. Зазвичай розробники кодують паролі й URL-адреси з автентифікацією, щоб спростити тестування. Але згодом вони можуть потрапити до рук зловмисників, що відкриє їм доступ до коду.

Нехай користувачі бачать лише те, що їм потрібно

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

Bandit сканує найкраще

Використовуйте пакет Bandit для кожного проєкту Python, щоб отримувати звіти у формі абстрактного синтаксичного дерева. Він найкраще підходить для сканування вразливостей, як-от поширених проблем із YAML, ранжування ризиків безпеки від низького до високого та виділення проблемних рядків у коді.

Оновіть свій сервер

Часто оновлення потребує саме сервер, а не код. Окрім перевірки наявності оновленої версії програмного забезпечення — тобто її сумісності з кодом Python — переконайтеся, що система керування безпекою також оновлена.