include::../../../shared_content/secrets/description.adoc[] == Why is this an issue? include::../../../shared_content/secrets/rationale.adoc[] === What is the potential impact? If a Django 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 Django, changing the secret value is sufficient to invalidate any data that it protected. It is important to not add the revoked secret to the `SECRET_KEY_FALLBACKS` list. Doing so would not prevent previously protected data from being used. include::../../../shared_content/secrets/fix/vault.adoc[] === Code examples ==== Noncompliant code example [source,python,diff-id=1,diff-type=noncompliant,subs="attributes"] ---- SECRET_KEY = 'r&lvybzry1*k+qq)=x-!=0yd5l5#1gxzk!82@ru25*ntos3_9^' ---- ==== Compliant solution [source,python,diff-id=1,diff-type=compliant,subs="attributes"] ---- import os SECRET_KEY = os.environ["SECRET_KEY"] ---- //=== How does this work? //=== Pitfalls //=== Going the extra mile == Resources include::../../../shared_content/secrets/resources/standards.adoc[] === Documentation * https://docs.djangoproject.com/en/4.2/ref/settings/#std-setting-SECRET_KEY[Django documentation] - Settings - SECRET_KEY //=== Benchmarks