secure coding guidelines
Цей підручник пояснює безпечне кодування, як уникнути вразливостей, пов’язаних із безпекою, а також містить інструкції та контрольний список кодування для практик безпечного кодування:
Щоб забезпечити вбудовану безпеку програмного забезпечення та впровадити Правила та найкращі практики безпечного кодування, вся організація разом із командою, визначеною для роботи над запланованою розробкою додатків, повинна враховувати певні аспекти.
Тут ми обговоримо ті аспекти, які допомагають розробити захищене програмне забезпечення.
найкраща програма для перевірки темп процесора
Це так просто, як якщо розробник не знає, що мається на увазі „Безпека програмного забезпечення“ і як хакер може зламати своє програмне забезпечення, взяти його під контроль і спробувати використати, тоді просто неможливо закодувати безпечне програмне забезпечення. Отже, розробник повинен спочатку зрозуміти значення безпечного кодування.
Що ви дізнаєтесь:
- Що таке безпечне кодування?
- Правила безпечного кодування
- Контрольний перелік практик безпечного кодування
- Висновок
Що таке безпечне кодування?
Безпечне кодування полягає у розробці та розробці програмного забезпечення уникаючи слабких сторін які призводять до уразливостей, пов’язаних із безпекою, дотримуючись зазначених стандартів безпеки та найкращих галузевих практик.
Найперше питання, яке виникає у свідомості кожного, - це 'Скільки безпеки потрібно для нашого програмного забезпечення' або Коли ми можемо сказати, що наше програмне забезпечення захищене? і Які це стандарти безпеки ?
Шахрайство та загрози безпеці зростають з кожним днем, і ми спостерігаємо нові різновиди та способи злому, навіть у так званому найбільш захищеному програмному забезпеченні.
Нещодавно ми почули, як програма Aaadhar від UIDAI піддається фальсифікації персональних даних. Отже, насправді важко зрозуміти, наскільки безпека потрібна для програмного забезпечення та які стандарти безпеки, якщо ми не зрозуміємо загроз, пов'язаних із програмним забезпеченням, і не визначимо їх пріоритетами на основі ризиків для бізнесу.
Можливо, буде важко забезпечити 100% захист програмного забезпечення, але якщо команда програми проаналізує Ризики та цінні папери які беруть участь у своєму програмному забезпеченні, тобто потенційних загрозах, і якщо команда може подбати про пом'якшення цих ризиків, тоді було б добре з точки зору безпеки програми.
Таким чином, найпершим завданням для команди є виявлення та аналіз ризиків та цінних паперів, які беруть участь у їх застосуванні, та розуміння можливих варіантів пом'якшення та прийняття найкращого варіанту відповідно.
Отже, після виявлення першої десятки вразливостей класифікуються майже всі атаки, з якими програма може зіткнутися. Це допоможе зрозуміти загрози та надати пріоритет зусиллям, спрямованим на безпеку та розвиток, більше на попередження, ніж на пом'якшення наслідків.
Наприклад Незважаючи на те, що ми плануємо розробити додаток, пов’язаний із охороною здоров’я, який обробляє та зберігає дані про здоров’я особи та її особисту інформацію, найбільшим ризиком безпеки для програми є викрадення персональних даних про здоров’я.
Зменшення ризику
Щоб зменшити ризик,
- Впровадження захисту доступу до даних неавторизованим користувачем повинно оброблятися з відповідною автентифікацією та авторизацією (надійні реалізації політики паролів, 2-факторна автентифікація).
- Потрібно подбати про те, щоб не було витоку даних під час передачі даних з одного джерела до іншого джерела шляхом впровадження захищених каналів (HTTPS) передачі даних та впровадження шифрування даних під час транзиту.
- Втручання або викрадення даних у стані спокою - також інша можливість. Отже, зберігання персональних даних про здоров’я (використання шифрування) є дуже важливим.
Перш ніж переходити до «стандарту безпечного кодування», завжди краще, щоб уся команда програми мала «Сесія підвищення обізнаності» і обговорювати і обговорювати,
- Вимога безпеки для їх конкретного продукту.
- Можливі переваги хакера від злому їх системи.
- Можливі шляхи та засоби компрометації безпеки їх застосування.
- Загальна практика безпеки дотримується в подібній галузі та галузі.
- Розуміння типових проблем безпеки їх відповідних програм.
Це також допомагає команді працювати краще, якщо вони можуть зрозуміти Джерела вразливостей з якими може зіткнутися їх програмне забезпечення та причини, з яких створюється програмне забезпечення Погано / Неадекватно Безпека .
Причини неадекватного впровадження безпеки
Загалом, нижче наведено кілька причин неадекватного впровадження безпеки в програмі.
найкращий додаток для зміни голосу для ПК
- Пріоритет надається функціональному випуску, ніж аспектам безпеки.
- Невідання або відсутність обізнаності щодо безпеки програмного забезпечення та хакерів.
- Недостатньо ясності щодо Програми або самого Дизайну Програмного забезпечення.
- Складність Програми.
- Недостатньо даних, інформації про активну систему, де вона буде розгорнута.
- Не враховується безпека на етапах SDLC.
- Недостатнє знання та розуміння специфіки мови, що використовується в програмному забезпеченні.
- Недостатньо знань для команди та розробників про Правила кодування безпеки.
Ми знаємо, що це не те, що всі розробники та тестувальники знають про безпеку програми і можуть не мати поглибленого розуміння вразливостей та експлуатуючих засобів безпеки, особливо щодо програми, над якою вони працюють. Як правило, вони будуть знайомі з 'Як функціонально кодувати' але не всі з них знають 'Як безпечно кодувати'.
Отже, дуже важливим аспектом для організації, щоб застосувати практику безпечного кодування в своєму програмному забезпеченні, є спочатку «Тренувати людей» . Отже, навчання їхньої команди аспектам безпечного кодування, найкращим практикам кодування безпеки та правильному використанню інструментів є дуже важливим.
Найважливішим принципом проектування програмної безпеки є «Впровадити безпеку за задумом та за замовчуванням» .
Правила безпечного кодування
Для досягнення безпеки дуже важливо мати „Стандарт безпечного кодування“ визначена для програми на самому початку розробки додатків, і це допомагає команді піклуватися про безпечні за замовчуванням програмне забезпечення та захищати його від атак.
Важливо переконатись, що це вся команда Примусове дотримання цього стандарту , незалежно від мови кодування та інструментів, які вони використовують у програмі.
Нижче наведено кілька прикладів, які потрібно впровадити за замовчуванням у захищеному дизайні коду:
- Доступ повинен бути обмежений лише автентифікованими користувачами, а автентифікацію потрібно впроваджувати на кожному рівні.
- Канали зв'язку повинні бути зашифровані для захисту маркерів автентифікації.
- Усі ключі, паролі та сертифікати повинні бути належним чином збережені та захищені.
- Потрібно впровадити шифрування файлів, шифрування бази даних та шифрування елементів даних.
Вибір мови для безпечного кодування
Вибір мови для кодування може не залежати від безпечного кодування. Немає нічого конкретного як захищений або незахищений мова для кодування для створення захищеного програмного забезпечення.
Це просто те, як ми використовуємо мову програмування для побудови програмного забезпечення та скільки глибоких знань розробник має про мову кодування при реалізації аспектів безпеки.
Однак з'ясовано, що, однак Стандарти безпечного кодування не залежать від вибору мови, Найкращі практики безпечного кодексу залежать від мови, платформи та реалізації .
Таким чином, щоб мати безпечний код, розробнику важливо мати глибокі знання мови, яка використовується в програмі, так що найкращі практики безпеки можуть бути легко впроваджені.
Приклад:
- Імовірність уразливості переповнення буфера відрізняється від мови до мови, але C, C ++ та Assembly вважаються найбільш сприйнятливими через свої застарілі можливості управління пам’яттю. Кілька стандартних функцій бібліотеки C, такі як strcpy () та memcpy (), вразливі до атак переповнення буфера. Неправильне використання цих функцій, копіюючи занадто великий буфер джерела, щоб вміститися в буфер призначення, призводить до переповнення буфера.
- Найпоширенішою проблемою веб-додатків на основі Java є можливі витоки ресурсів, які можуть виникнути через відкриті системні ресурси, такі як файли, сокети та підключення до бази даних.
Наступний аспект безпеки - про інструменти, які слід використовувати в Прикладній програмі для оптимізації безпеки, використовуючи такі інструменти, як Інтегровані середовища розробки буде найбільш вигідним, оскільки вони забезпечують багато Сповіщення для користувачів та приверніть увагу до цих сповіщень, щоб спробувати покращити якість програмного забезпечення.
- Інтеграція комерційних бібліотек / плагінів з відкритим кодом, таких як Eclipse, Spring Tool Suite, RAD з IDE, допомагає розробникам писати захищений код, виявляючи та ідентифікуючи потенційно вразливий код, а також сповіщає про результати, пов’язані із шкідливим виконанням файлів, витоком інформації та неправильна обробка помилок.
Важливо також використовувати Статичні та динамічні аналізатори для поліпшення аспектів безпеки програмного забезпечення. Як правило, статичні аналізатори оптимізовані для конкретних типів помилок, тому вони в підсумку знаходять велику кількість помилкових спрацьовувань при виявленні конкретних помилок. Іноді є ймовірність того, що вони також пропускають фактичні помилки.
Тому рекомендується використовувати кілька статичних аналізаторів покращити охоплення різних типів помилок та уникнути великої кількості помилкових спрацьовувань. Часом це також рекомендується виконувати ручне тестування до усунути помилкові спрацьовування .
Правила та рекомендації щодо безпечного кодування
Для програми буде добре визначити набір «Правила та рекомендації щодо безпечного кодування» до якого вихідний код може бути оцінений на відповідність, щоб тестери могли виконати «Перевірка відповідності» для кожного із цих стандартів безпечного кодування.
Отже, код безпеки може бути сертифікований як Відповідний або Невідповідний, використовуючи ці правила проти встановленого тесту.
За допомогою згаданих нижче правил можна перевірити наявність порушень безпеки:
- Файли потрібно закривати, коли вони більше не потрібні.
- Кожного разу, коли проходить структура через кордон, слід уникати витоку інформації.
- Об'єкти слід оголошувати з відповідною тривалістю зберігання.
Отже, тестові кейси для перевірки цих правил потрібно розробляти та проводити для перевірки відповідності відповідності. Також виявлено, що більшість уразливостей спричинені типовими типовими помилками програмування.
Отже, розробник повинен це розуміти «Небезпечний метод кодування» , в той час як вони також вивчають найкращі практики безпечного кодування. Ідеально зібрати найпоширеніші помилки програмування, що сприяють уразливості їх програм, щоб можна було піклуватися про них під час кодування.
Такі типові помилки програмування спричинені головним чином переповненням буфера, міжсайтовим сценарієм та недоліками введення.
Деякі типові уразливості програмування включають,
- SQL Injection (неправильна нейтралізація спеціальних елементів, що використовуються в команді SQL).
- Ціле переповнення.
- Переповнення буфера (копіювання буфера без перевірки розміру вводу).
- Неконтрольований рядок форматування.
- Відсутні аутентифікація та авторизація (неправильна авторизація).
- Вплив чутливих даних.
- Неправильна обробка помилок.
Деякі з цих помилок можуть призвести до збою системи, непередбачуваного доступу до системи та контролю над програмним забезпеченням, втраченим хакерами.
найкращий сервер для гри на вау
Типових помилок програмування, яких слід уникати
Нижче перелічено декілька поширених помилок програмування, яких слід уникати:
- Неправильна нейтралізація спеціальних елементів, що використовуються в команді SQL («Введення SQL»).
- Копіювання буфера, не перевіряючи розмір вводу ('Класичне переповнення буфера').
- Відсутня автентифікація для критичної функції.
- Відсутні або неправильні дозволи.
- Використання жорстко закодованих повноважень.
- Відсутнє шифрування конфіденційних даних.
- Необмежене завантаження файлу небезпечного типу.
- Довіра до ненадійних входів у рішенні щодо безпеки.
- Виконання з непотрібними привілеями.
- Підробка міжсайтових запитів (CSRF).
- Завантаження коду без перевірки цілісності.
- Неправильний розрахунок розміру буфера.
- Неправильне обмеження надмірних спроб автентифікації.
- Перенаправлення URL-адреси на ненадійний сайт («Відкрите переспрямування»).
- Неконтрольована форматування рядка.
- Використання одностороннього хешу без солі.
Контрольний перелік практик безпечного кодування
Нарешті, але не в останню чергу, розглянувши всі вищезазначені аспекти аспектів безпечної розробки програмного забезпечення, розробники повинні дотримуватися Встановлено контрольний перелік практик безпечного кодування щоб речі не пропустили. Нижче наведено декілька, але не вичерпних переліків.
Перевірка вводу:
- Не довіряйте введенню, розгляньте можливість централізованої перевірки введення.
- Не покладайтесь на перевірку на стороні клієнта.
- Будьте обережні з проблемами канонізації.
- Обмежте, відкиньте та дезінфікуйте вхідні дані. Перевірте тип, довжину, формат та діапазон.
Аутентифікація:
- Сайт розділу за анонімною, ідентифікованою та автентифікованою областю.
- Використовуйте надійні паролі.
- Підтримка періодів закінчення терміну дії пароля та вимкнення облікового запису.
- Не зберігайте облікові дані (використовуйте односторонні хеші з сіллю).
- Шифрувати канали зв'язку для захисту маркерів автентифікації.
- Передайте файли cookie автентифікації форм лише через з'єднання HTTPS.
Авторизація:
- Використовуйте найменш привілейовані облікові записи.
- Розгляньте деталізацію дозволу.
- Примусово розподілити привілеї.
- Обмежте доступ користувачів до системних ресурсів.
- Використовуйте протокол OAuth 2.0 для автентифікації та авторизації.
- Перевірка API виконання.
- Білий список допустимих методів.
- Захистіть привілейовані дії та конфіденційні колекції ресурсів.
- Захист від підробки міжсайтових ресурсів (CSRF).
Управління сесіями:
- Створіть ідентифікатор сеансу на сервері.
- Завершіть сеанс за допомогою відмови.
- Створіть новий сеанс повторної автентифікації.
- Встановіть атрибут „secure” для файлів cookie, що передаються через TLS.
Криптографія:
- Використовуйте криптографію під час „Дані під час передачі, Дані в пам’яті, Дані в русі, Цілісність повідомлень“.
- Не розробляйте свого. Використовуйте перевірені та перевірені функції платформи.
- Тримайте незашифровані дані близько до алгоритму.
- Використовуйте правильний алгоритм та розмір ключа.
- Уникайте управління ключами (використовуйте DPAPI).
- Періодично перемикайте ключі.
- Зберігайте ключі в обмеженому місці.
Протоколювання та аудит:
- Визначте зловмисну поведінку.
- Знайте, як виглядає хороший рух.
- Аудит та реєстрація діяльності на всіх рівнях програми.
- Захищений доступ до файлів журналів.
- Створюйте резервні копії та регулярно аналізуйте файли журналів.
Вихідне кодування:
- Проведення «Перевірка вводу (XML, JSON….).
- Використовуйте параметризований запит.
- Проведіть «Перевірку схеми».
- Проведіть кодування (XML, JSON ..).
- Надіслати заголовки безпеки.
Довідково: ' Контрольний список практик безпечного кодування OWASP (Коротше, контрольний список SCP) '
Таблична підсумок контрольного списку безпечного кодування
У наведеній нижче таблиці узагальнено „Що слід пам’ятати для безпечного коду“ програми.
# | Що? |
---|---|
7 | Щоб забезпечити дотримання всією командою стандартів безпечного кодування. |
1 | Щоб чітко зрозуміти: «Що таке безпечний код»? |
два | Щоб зрозуміти загальні «джерела вразливостей». |
3 | Провести для команди «Сесію підвищення обізнаності». |
4 | Виявити та проаналізувати „Ризики та цінні папери”, що стосуються програми та методів „пом’якшення”. |
5 | «Навчити команду» стандартам безпечного кодування, найкращим практикам та рекомендаціям. |
6 | Визначити „Стандарт безпечного кодування” |
8 | Використовувати «Легку для реалізації мову» та мати «поглиблені знання» з неї. |
9 | Використовувати інструменти IDE (інтегрованого середовища розробки) |
10 | Використовувати „статичні та динамічні аналізатори“ та „кілька статичних аналізаторів“ для усунення „помилкових спрацьовувань“ |
одинадцять | Щоб здійснити «Тестування вручну», де потрібно виявити помилку, пропустіть пропуски. |
12 | Визначити набір 'Правила та рекомендації щодо безпечного кодування' |
13 | Провести «Тестування відповідності на відповідність» для встановлених правил. |
14 | Щоб зрозуміти „небезпечний метод кодування” та зібрати „Поширені помилки програмування”. |
п’ятнадцять | Суворо дотримуватися «контрольного списку SCP» |
Висновок
Ми сподіваємось, що цей підручник стане вашим найкращим посібником із забезпечення програмної безпеки.
Керівні принципи кодування для безпечної розробки програмного забезпечення були перелічені тут простими словами з прикладами для легкого розуміння концепції.
Щасливого читання !!
Рекомендована література
- Тестування безпеки (повний посібник)
- ТОП 30 КРАЩИХ компаній з кібербезпеки у 2021 році (від малих фірм до підприємств)
- Основи комп'ютерного програмування для початківців | Підручник з кодування
- 15 найкращих безкоштовних редакторів коду для ідеального кодування
- Підручник з тестування ін’єкцій SQL (Приклад та запобігання атаці ін’єкцій SQL)
- Розробники не є добрими тестувальниками. Що ти кажеш?
- ISTQB Foundation Формат іспиту та вказівки з вирішення робіт
- Вказівки щодо тестування безпеки мобільних додатків