Skip to main content

SafeURL for Python

Ported by @nicolasrod and docs by @momopranto

Overview

SafeURL is a library that aids developers in protecting against a class of vulnerabilities known as Server Side Request Forgery (SSRF). It does this by validating each part of the URL against a configurable white or black list before making an HTTP request. SafeURL is open-source and licensed under MIT.

Note that for mitigating SSRF vulnerabilities, we first recommend routing outbound requests from your infrastructure through a proxy such as Smokescreen. Alternately, ensure that all services which can make outbound requests to potentially user-controlled URLs are firewalled from talking to other internal hosts. Application-layer defences such as this library should only be used if those options are not practical. Please see our blog post for further information.

Installation

Clone this repository and import it into your project.

Implementation

SafeURL serves as a replacement wrapper for PyCurl in Python.

try:
  #User controlled input
  url = request.args['url']
  su = safeurl.SafeURL()
  #Execute using SafeURL
  res = su.execute(url)
except:
  print "Unexpected error:", sys.exc_info()
  #URL wasn't safe

Configuration

Options such as white and black lists can be modified. For example:

try:
    su = safeurl.SafeURL()
    #Create an options object
    opt = safeurl.Options()
    opt.clearList("whitelist")
    opt.clearList("blacklist")
    #Allow requests to specific domains
    opt.setList("whitelist", ["google.com", "youtube.com"], "domain")
    #Restrict urls with the ftp scheme
    opt.setList("blacklist",["ftp"],"scheme")

    su.setOptions(opt)
    res = su.execute("http://www.youtube.com")
except:
    print "Unexpected error:", sys.exc_info()

Metadata

Release files for SafeURL-Python 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SafeURL-Python 1.3
File Size Uploaded
SafeURL-Python-1.3.tar.gz 7.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SafeURL-Python 1.3
File Interpreter ABI Platform
SafeURL_Python-1.3-py3-none-any.whl Python 3 none any Details

Total release size: 16.3 kB

Release files / SafeURL-Python-1.3.tar.gz

Download URL SafeURL-Python-1.3.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9f6d8e7c76585143fabf0b46a50c862f2efa4c444a32f534e3cdb9b4e452a8d6
BLAKE2b-256 checksum
How to use checksums
4fb5f7bf7de32772e495d76f113b5f2817f16ef773cbdeb432ed34720fd686fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / SafeURL_Python-1.3-py3-none-any.whl

Download URL SafeURL_Python-1.3-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0133093f405a404f6d5a18c2d04b3a29e02d7824e1749fe8d73a1ab4b67b30d3
BLAKE2b-256 checksum
How to use checksums
ac7d0a2f9c68c15befcdf9ee2ec2d0485c03d0e9a401669f766b68246f4ca1f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

1.3 This release

2 release files

1.2

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page