Skip to main content

Constructs strict Content-Security-Policy header after scanning all HTML files in a directory

Project description

Description

csp-scan is a Python script for constructing strict content-security-policy headers based on content of HTML files in a source directory. It looks for used sources and hrefs in HTML elements for most CSP directives and outputs the header content.

Includes a warning system for unencrypted HTTP connections.

Installation

pip3 install csp-scan

Usage

cd my-frontend-src

csp-scan

Options

-d, --default-src

Value for default src directive. Default: self

-r, --report-uri

Report URI to post violations to.

-l, --literal-src

Include whole src paths in the CSP.

Contribution / forking

Contributions welcome!

Context

Directive class is initiated with a name of the directive (e.g. script-src, style-src...). Uses regex to locate specific attribute in a HTML element, given an optional pre-condition or file format.

File definitions.py creates directive objects and defines their conditions through add_search_instruction method. If you want to add a directive or modify a search condition, do it there.

style_src.add_search_instruction(
    tag = "link",
    attribute = "href",
    format = ".css"
)

This instruction will find and classify this source as style-src:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css"/>

But not this:

<link href="https://somecdn/js/somejsfile.js"/>
style_src.add_search_instruction(
    tag = "link",
    attribute = "href",
    condition = ("rel", "stylesheet")
)

This instruction will find and classify this source as style-src:

<link
    href="https://fonts.googleapis.com/css2?family=Montserrat:wght@100;400;500;600;700&display=swap"
    rel="stylesheet"
/>

But not this:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css"/>
style_src.add_search_instruction(
    tag = "link",
    attribute = "href"
)

This instruction would find and classify all of the above examples.

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

csp-scan-1.0.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

csp_scan-1.0.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file csp-scan-1.0.0.tar.gz.

File metadata

  • Download URL: csp-scan-1.0.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for csp-scan-1.0.0.tar.gz
Algorithm Hash digest
SHA256 36a9bcfb8fce095ecbc2107099b85ba0902d10eabaf56274c97a6bf4a0088951
MD5 e5fb41782f10aafe9b200f1b830f9045
BLAKE2b-256 e8fa89b05ce3193173bc05cd1d225edd2c13d9d7af0dd6baf21d54b1e8105af8

See more details on using hashes here.

File details

Details for the file csp_scan-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: csp_scan-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for csp_scan-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5cea722fd526e4e7ef9ab574ba41382ba37b997d45264bbb1c74c2cc627689f6
MD5 cd3792dddcfb7a3a588dd23937319218
BLAKE2b-256 ee3e933c0b8c2073a24cc3b5e71bc88f25dadb5e058b84f155e383e6747b5d60

See more details on using hashes here.

Supported by

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