include::../../../shared_content/secrets/description.adoc[] == Why is this an issue? include::../../../shared_content/secrets/rationale.adoc[] === What is the potential impact? If a Flask secret key leaks to an unintended audience, it can have serious security implications for the corresponding application. The secret key is used to sign cookies and other sensitive data so that an attacker could potentially use it to perform malicious actions. For example, an attacker could use the secret key to create their own cookies that appear to be legitimate, allowing them to bypass authentication and gain access to sensitive data or functionality. In the worst-case scenario, an attacker could be able to execute arbitrary code on the application and take over its hosting server. == How to fix it include::../../../shared_content/secrets/fix/revoke.adoc[] In Flask, changing the secret value is sufficient to invalidate any data that it protected. include::../../../shared_content/secrets/fix/vault.adoc[] === Code examples ==== Noncompliant code example [source,python,diff-id=1,diff-type=noncompliant,subs="attributes"] ---- from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = "secret" # Noncompliant ---- ==== Compliant solution [source,python,diff-id=1,diff-type=compliant,subs="attributes"] ---- from flask import Flask import os app = Flask(__name__) app.config['SECRET_KEY'] = os.environ["SECRET_KEY"] ---- //=== How does this work? //=== Pitfalls //=== Going the extra mile == Resources include::../../../shared_content/secrets/resources/standards.adoc[] === Documentation * Flask documentation - https://flask.palletsprojects.com/en/2.3.x/config/#SECRET_KEY[Config - SECRET_KEY] //=== Benchmarks