Перейти к содержанию

JP0415C

Использование фиксированных значений при конфигурировании flask

Static Badge Static Badge


Конфигурация flask приложения с использованием фиксированных значений не рекомендуется. Предпочтительнее применять параметры, которые зависят от текущего окружения, так как это позволяет защитить сервис от случайной активации, например, тестового режима или режима отладки в производственной среде.

Например, flask в режиме отладки использует дебаггер werkzeug, который открывает возможность исполнения произвольного кода. Данный режим не должен использоваться вне тестовой среды.

Проверка срабатывает при записи константных значений для параметров DEBUG, TESTING, ENV, SECRET_KEY в словарь config с использованием функции config.update(), а также при передаче константного значения в аргумент debug непосредственно при запуске приложения с использованием app.run(debug=Value).

Пример небезопасного использования

import os
from flask import Flask

app = Flask(__name__)
# use argument write of hardcoded value
app.run(debug=True)
app.run(debug=False)
app.config.update(DEBUG=True)
app.config.update(TESTING=True)
app.config.update(SECRET_KEY="aaaa")
# OK - no hardcoded value
app.config.update(TESTING=os.getenv("TESTING"))
python -m flask run --host=0.0.0.0

Дополнительная информация