From 52053bcbe601efd6cab4f5cf94233cd87052d13c Mon Sep 17 00:00:00 2001 From: girst Date: Fri, 5 Jun 2020 20:28:44 +0200 Subject: [PATCH] move flask secret_key to config.ini --- app/frontend.py | 4 +++- config/config.ini | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/frontend.py b/app/frontend.py index ae55486..7fc2353 100644 --- a/app/frontend.py +++ b/app/frontend.py @@ -1,6 +1,7 @@ import re import time import hmac +import base64 import hashlib import sqlite3 import secrets @@ -11,7 +12,8 @@ from flask import Flask, render_template, request, redirect, flash, url_for, jso from common import * app = Flask(__name__) -app.secret_key = secrets.token_bytes(16) # XXX: generate and hard-code, or cookies and csrf-validation will fail! +app.secret_key = base64.b64decode(cf['frontend'].get('secret_key','')) or \ + secrets.token_bytes(16) # development fallback; CSRF/cookies won't persist. @app.route('/') def index(): diff --git a/config/config.ini b/config/config.ini index eea4938..8de3ac3 100644 --- a/config/config.ini +++ b/config/config.ini @@ -2,6 +2,9 @@ database = /opt/yt/subscriptions.sqlite [frontend] +# generate a base64 encoded secret key e.g. with `head -c32 /dev/urandom | base64` +# this secures the cookies and csrf tokens of the frontend. +secret_key = [websub] # how long to ask websub-provider for updates (cargo-culted from invidious; 5 * 24 * 60 * 60 = 5days): -- 2.39.3