Skip to main content

Flask-SecurityTxt is a Flask extension for creating and serving security.txt files which provide information on reporting security vulnerabilities.

Project description

Flask-SecurityTxt

Flask-SecurityTxt is a simple extension for Flask that makes it easy to add a security.txt file to your website. This file, as specified by the Internet Security Research Group, is used to provide information to security researchers about how to report vulnerabilities in your website.

Installation

You can install Flask-SecurityTxt using pip:

pip install flask-securitytxt

Usage

from flask import Flask
from flask_security_txt import SecurityTxt

app = Flask(__name__)
security_txt = SecurityTxt(app)

You can also customize the contents of the security.txt file by providing the following settings in the configuration file:

Property Type Default Description
SECURITY_TXT_ENDPOINT str "security_txt" The name by which the end-point will be known to the Flask-app.
WELL_KNOWN_DIR str ".well-known" The name of the directory that will contain the security.txt file.
SECURITY_TXT_FILE_NAME str "security.txt" The name of the security.txt file.
SECURITY_TXT_SIGN_KEY str None The name of a file containing a GPG-key used for signing the security.txt file.
SECURITY_TXT_CONTACT str Iterable None The value of the contact field. An Iterable type value will result in multiple contact fields. The contact field value is automatically generated using SECURITY_TXT_CONTACT_MAILBOX if None.
SECURITY_TXT_CONTACT_MAILBOX str "security" The local part of the automatically generated contact email address. Only used if SECURITY_TXT_CONTACT is None.
SECURITY_TXT_EXPIRES str datetime None The value of the expires field. A datetime type value will result in a ISO-formatted timestamp string. The expires field value is automatically generated using SECURITY_TXT_OFFSET if None.
SECURITY_TXT_EXPIRES_OFFSET tuple timedelta (0, 0, 0, 0, 0, 0, 1) The offset to be applied to datetime.now() in order to automatically generate the value of the expires field. A tuple type will be unpacked and passed to the timedelta constructor, which interprets it as days, seconds, microseconds, milliseconds, minutes, hours and weeks.
SECURITY_TXT_ENCRYPTION str Iterable None The value of the encryption field. An Iterable type value will result in multiple encryption fields, a value of None will omit the encryption field.
SECURITY_TXT_ACKNOWLEDGMENTS str Iterable None The value of the acknowledgments field. An Iterable type value will result in multiple acknowledgments fields, a value of None will omit the acknowledgments field.
SECURITY_TXT_PREFERRED_LANGUAGES str Iterable None The value of the languages field. An Iterable type value will result in a comma-separated string. The languages field value is attempted to be automatically generated using the available translations listed by the Flask-Babel extension if None.
SECURITY_TXT_CANONICAL str None The value of the canonical field. The canonical field value is automatically generated using a HTTPS-scheme, the host-name of the current request and the URL associated with the security.txt end-point, as named in SECURITY_TXT_ENDPOINT.
SECURITY_TXT_POLICY str Iterable None The value of the policy field. An Iterable type value will result in multiple policy fields, a value of None will omit the policy field.
SECURITY_TXT_HIRING str Iterable None The value of the hiring field. An Iterable type value will result in multiple hiring fields, a value of None will omit the hiring field.
SECURITY_TXT_HEADER str A comment added to the start of the security.txt
SECURITY_TXT_FOOTER str None

Configuring Comments

For each property that directly controls that value of a field, a comment can be added on the preceding line(s) by configuring the property name SECURITY_TXT_<PROPERTY>_COMMENT. Note that it is up to the developer to optionally add whitespace and prepend each line of the comment with a #.

Configuring Contact Details

The Contact field of the security.txt file can be configured with one of two different ways. First of all, the whole value string can be defined using the SECURITY_TXT_CONTACT property. This take precedence over the alternative method, which uses the SECURITY_TXT_CONTACT_MAILBOX property. The value of this property is combined with the domain name of the current host, as it is known to Flask. The latter method is less reliable, as such the prior method is preferred if possible. By default, the contact is set to be "security@", with the domain name being provided by Flask.

Example

A security.txt file will be available in your website's .well-known directory, with the following contents:

Contact: mailto:security@example.com
Encryption: https://example.com/key.asc
Canonical: https://example.com/.well-known/security.txt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_securitytxt-1.3.6.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

Flask_SecurityTxt-1.3.6-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file flask_securitytxt-1.3.6.tar.gz.

File metadata

  • Download URL: flask_securitytxt-1.3.6.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for flask_securitytxt-1.3.6.tar.gz
Algorithm Hash digest
SHA256 831776a677735493c93afb0b3a8b3e64d3d08050cd01114aa25f01c7d39b0bd1
MD5 16d5386f2b894a3b3d96161e5e848aec
BLAKE2b-256 0338f5fe0f5853639a59622e2cab2c55602877ac7abcc6d9fa26fe0676b6f786

See more details on using hashes here.

File details

Details for the file Flask_SecurityTxt-1.3.6-py3-none-any.whl.

File metadata

File hashes

Hashes for Flask_SecurityTxt-1.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 498dcf2e1f055d2f9d11944fefd09d25fb45fdfd1eb0107b01f5a44f343d4fad
MD5 5b4082b85af421cba97a41543185a5d1
BLAKE2b-256 90a3e46bd2ce43fce9c214f97b811304a88380260cc74a0356e6725383f3f49f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page