Код-ревью Junior OWASP Top 10 и API Top 10 обновлено
Ревью: настройки Flask-приложения
Вопрос
Найдите проблемы конфигурации и безопасности в запуске приложения.
from flask import Flask
app = Flask(__name__)
app.config["SECRET_KEY"] = "dev"
app.config["SESSION_COOKIE_SECURE"] = False
@app.route("/health")
def health():
import sys, os
return {"python": sys.version, "env": dict(os.environ)}
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Коротко
Классическая Security Misconfiguration: настройки для разработки уехали в прод. Защита: разные конфиги для окружений, секреты вне кода, проверка конфигурации в CI.
Что должен найти ревьюер
- Безопасностьстрока 3Секретный ключ захардкожен и угадываем: им подписываются сессии, атакующий подделает cookie. Брать из секрет-хранилища или переменной окружения, длинный случайный.
- Безопасностьстрока 4Cookie сессии уходит и по HTTP: на проде нужен
SESSION_COOKIE_SECURE = True, а также HttpOnly и SameSite. - Безопасностьстрока 8Health-check раскрывает версию Python и все переменные окружения, включая пароли и ключи.
- Безопасностьстрока 11
debug=Trueна внешнем интерфейсе: отладчик Werkzeug позволяет выполнить код на сервере. На проде отладка выключена, запуск через WSGI-сервер.
Разбор
Классическая Security Misconfiguration: настройки для разработки уехали в прод. Защита: разные конфиги для окружений, секреты вне кода, проверка конфигурации в CI.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Ревью: эндпоинт профиля на Express
Следующий вопрос
Как вы проверяете безопасность API
Ещё по теме «OWASP Top 10 и API Top 10»
- Первое место OWASP Top 10
- BOLA в API
- Unrestricted Resource Consumption
- Зачем ASVS
- BFLA
- CWE и CVE
- OWASP API Top 10 2023
- Базовые принципы защиты