From 37a0ff7ec24b19f7ffee3d2d6f5ffbe7d07a2641 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 | 6 +++++- config/config.ini | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/frontend.py b/app/frontend.py index ae55486..82f87d7 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,10 @@ 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! +if 'secret_key' in cf['frontend']: + app.secret_key = base64.b64decode(cf['frontend']['secret_key']) +else: + app.secret_key = secrets.token_bytes(16) @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