Skip to main content

A developer-friendly web scanning tool

Project description

🚀 ready is a tool for developers to check how production ready their website.

Usage

Install the tool from PyPI with:

pip install ready-check

Running the checks for a domain is as simple as:

ready <domain>

For more options, check the output of --help.

Usage during development

If you have cloned the repository and would like to run the checks with your local version, simply run:

python3 -m ready.ready <domain> [--request-filter=<x>] [--check-filter=<x>]

Optional Dependencies

There are no required dependencies, but two optional dependencies that enable some additional behaviour:

  • Installing the tld package adds support for using the fully-qualified domain name for some DNS-related checks. This is handy if you want to check a subdomain.
  • Installing beautifulsoup4 adds support for extracting some headers from the HTML document as well as the headers. This technique can be used for sites that use static hosting like Github Pages.

Note: if you install from PyPI these dependencies are installed.

Check list

  • Cookies should set the SameSite flag
  • Cookies should set the Secure flag
  • Cookies should set the HttpOnly flag
  • Swagger URLs should not return 200 (requires --fuzz)
  • HSTS Header should be included in response
  • HSTS Header should have a long max-age
  • HSTS Header should have includeSubdomains
  • HSTS Header should have preload
  • An AAAA DNS record exists (IPv6 Support)
  • HTTP -> HTTPS redirection occurs
  • Permissions-Policy should exist if the response is HTML
  • frame-ancestors should be in CSP or X-Frame-Options should exist if the response is HTML
  • X-Content-Type-options should be "nosniff"
  • Referrer-Policy should be set
  • X-XSS-Protection header should not exist
  • HTML should start with "<!doctype html>"
  • <html> tag should include lang
  • HTML should include meta charset tag
  • HTML should include <title>
  • HTML should include link with rel="icon"
  • HTML should not use schemeless urls for links or hrefs
  • HTML should not use unnecessary HTML entities
  • All script tags should use subresource integrity
  • X-DNS-Prefetch-Control should be set to off
  • CDNs should not be used for Javascript or CSS assets
  • RSS and JSON feeds should return Access-Control-Allow-Origin header
  • Cache-Control max-age should be <= 86400 for HTML documents
  • Content-Security-Policy header should exist
  • Content-Security-Policy header should start with default-src 'none'
  • Content-Security-Policy must include either default-src or script-src
  • Content-Security-Policy header must not include unsafe-inline
  • Content-Security-Policy header must not include unsafe-eval
  • Content-Security-Policy header must not include report-sample
  • Content-Security-Policy header must not include report-uri
  • Content-Security-Policy header should not include report-to
  • Content-Security-Policy header should include upgrade-insecure-requests
  • Content-Security-Policy header only includes valid directives
  • At least two nameservers should be configured
  • Cross-Origin-Resource-Policy should be "same-origin"
  • cross-origin-opener-policy should be "same-origin"
  • Cross-Origin-Embedder-Policy should be "require-corp"
  • Report-To Header must not be included in response
  • Response should not contain hints of a Cloudflare captcha page
  • Response should not contain hints of a Kasada error page
  • Response should include a Content-Type
  • Response should be gzipped
  • Content-Type header should contain charset
  • Expires header should not be used without Cache-Control
  • Cache-Control header should be included in the response
  • P3P header is deprecated and should not be returned
  • SPF TXT record should exist
  • SPF TXT record should contain "-all"
  • SPF DNS record is deprecated and should not exist
  • SPF includes use less than 10 DNS requests
  • DMARC record should exist
  • DMARC record should contain p=reject
  • SPF should be "v=spf1 -all" if there are no MX records or MX record is "."
  • Robots.txt exists and is a text file
  • Security.txt exists and is a text file that contains required attributes
  • Security.txt has an expiry date in the future
  • Favicon is served at /favicon.ico
  • Headers that leak information should not be in the response
  • SSL certificate should be trusted
  • SSL expiry should be less than one year
  • SSL expiry should be greater than five days
  • SSL connection fails when using TLS 1.1
  • SSL connection fails when using TLS 1.0
  • DNS CAA should be enabled
  • DNS CAA should include accounturi
  • DNS CAA should include validationmethods
  • SSL certificate must provide OCSP URI
  • SSL certificate should provide OCSP must-staple
  • Response should be a 200 (after redirects)

Other Tools

This tool overlaps with a bunch of other online site checking tools. Here's a few that I have used in the past:

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

ready-check-1.5.0.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

ready_check-1.5.0-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file ready-check-1.5.0.tar.gz.

File metadata

  • Download URL: ready-check-1.5.0.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for ready-check-1.5.0.tar.gz
Algorithm Hash digest
SHA256 b42db1778ae7996d81cd7e5d0b5b021279947f13d436a83b59ebfeadfeb01c7c
MD5 093d4259a044b8f211e262a8fd2a991e
BLAKE2b-256 055066f941362bf8a563e532d18d3a3bd6f532ceac2b5033077a3cf9db39fbaa

See more details on using hashes here.

File details

Details for the file ready_check-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: ready_check-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for ready_check-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b369cf541ee751671795312aeef5666f895e3dfbeb4b701324312dcb512e28f
MD5 56725a2ae59628ad5a4764a65c4c8030
BLAKE2b-256 d48465aabe013875c3e8d6fdaedc4c667a5325b909a4041cc92eba4dfcd7b07c

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