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)
| File | Size | Uploaded | |
|---|---|---|---|
| SafeURL-Python-1.3.tar.gz | 7.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|