Чек-лист безпеки веб-застосунку
Практичний чек-лист, незалежний від постачальника, для кожного, хто випускає веб-застосунок, незалежно від того, чи ти написав кожен рядок вручну, чи створив застосунок за допомогою промптів ШІ ("vibe coding"). ШІ пише код, який проходить основний сценарій, і все одно лишає реальні дірки, тож робоча функція нічого не доводить щодо безпеки. Цей чек-лист - те, що варто реально перевірити перед запуском і після нього.
Він розбитий за категоріями. Почни з будь-якої або проходь їх по порядку. Кожна сторінка містить конкретні перевірки: що тестувати, чому це важливо і як виправити.
Як користуватися
- Став кожен пункт як тест, а не як текст для читання. Спробуй атаку, потім переконайся, що виправлення працює.
- Тестуй з некоректним вводом і від імені не того користувача, а не лише в нормальному сценарії.
- Коли код виглядає правильним, запусти сканування розгорнутої URL-адреси, щоб виявити все, що зламалося між промптами.
Категорії
- Автентифікація та сесії: як люди доводять, хто вони, і як ти тримаєш їх у системі, не даючи вкрасти токен.
- Авторизація та контроль доступу: переконатися, що користувач, який увійшов, не може читати або змінювати чужі дані (IDOR, мультитенантність).
- Валідація вводу та ін'єкції: SQL-ін'єкції, XSS, SSRF, небезпечна десеріалізація та завантаження файлів.
- API та запити: CSRF, CORS, mass assignment і атаки на форму запитів.
- Секрети та захист даних: ключі, шифрування в стані спокою та під час передачі, персональні дані і права на дані.
- Доступність та зловживання: обмеження частоти запитів, відмова в обслуговуванні та неконтрольоване споживання ресурсів.
- Інфраструктура та розгортання: порти та брандмауери, контейнери, заголовки безпеки, TLS і відкриті адмін-панелі.
- Залежності, логування та процес: ланцюг постачання, секрети в git, обробка помилок, моніторинг і незалежне тестування.
Коротка версія
Якщо маєш лише годину, перевір спочатку ці п'ять пунктів. Вони найпоширеніші і найшкідливіші в реальних аудитах:
- Порушений контроль доступу. Увійди як користувач A і запитай об'єкт користувача B за його id. Якщо він повертається, у тебе є дірка. Див. авторизацію.
- Секрети в клієнті або в git. Пошукай ключі в бандлі браузера та в репозиторії. Все, що закомічено, вважається скомпрометованим. Див. секрети.
- Немає обмеження частоти запитів на вході. Перебір паролів без нього тривіальний. Див. доступність.
- Відсутній захист від CSRF або login-CSRF. Див. API та запити.
- Порти відкриті повз брандмауер. Контейнери часто публікують порти, обходячи брандмауер. Див. інфраструктуру.
Цей чек-лист опублікувала команда Arc OS. Ми перевіряємо за ним власний продукт, а ти можеш використовувати його для свого. Це стартова база, а не сертифікація, і він не замінює незалежного тесту на проникнення.