curl -X POST https://api.shadowtrackr.com/api/v4/internet_standards
-H "Authorization: Bearer [API_KEY]"
-d '{}'
from shadowtrackr import ShadowTrackr
import json
st = ShadowTrackr(api_key="API_KEY")
result = st.internet_standards()
print(json.dumps(result, indent=2))
<?php
$postdata = []
$ch = curl_init('https://api.shadowtrackr.com/api/v4/internet_standards
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer [API_KEY]"],
CURLOPT_POSTFIELDS => json_encode(postdata),
]);
$results = json_decode(curl_exec($ch), true);
print_r($results);
curl_close($ch);
?>
Results
{"results": "1 result found",
"data": [
{"url": "shadowtrackr.com",
"checks": [
{"title": "Modern address (IPv6)",
"checks": [
{ "title": "At least 2 working IPv6 nameservers for domain",
"passed": True,
"status": "required",
"done": True,
"note": "The AAAA records for the NS servers of this domain must exist and resolve to IPv6 addresses",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"ipv4": ["216.239.32.110"],
"ipv6": ["2001:4860:4802:32::6e"]
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"ipv4": ["216.239.36.110"],
"ipv6": ["2001:4860:4802:36::6e"]
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"ipv4": ["216.239.34.110"],
"ipv6": ["2001:4860:4802:34::6e"]
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"ipv4": ["216.239.38.110"],
"ipv6": ["2001:4860:4802:38::6e"]
}
]},
{"title": "IPv6 nameservers all reachable over IPv6",
"passed": True,
"status": "required",
"done": True,
"note": "All nameservers that have an AAAA record with an IPv6 address should be reachable over IPv6.",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"ipv4": ["216.239.32.110"],
"ipv6": ["2001:4860:4802:32::6e"]
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"ipv4": ["216.239.36.110"],
"ipv6": ["2001:4860:4802:36::6e"]
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"ipv4": ["216.239.34.110"],
"ipv6": ["2001:4860:4802:34::6e"]
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"ipv4": ["216.239.38.110"],
"ipv6": ["2001:4860:4802:38::6e"
}
]}
]},
{"title": "At least one of your web servers has an IPv6 address.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"url": "shadowtrackr.com",
"ipv4": "91.98.127.83",
"ipv6": "2a01:4f8:1c1a:e20::1"
}
]},
{"title": "All your web servers with an IPv6 address are reachable over IPv6.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"url": "shadowtrackr.com",
"ipv6": "2a01:4f8:1c1a:e20::1",
"reachable": "yes"
}
]},
{"title": "Your website on IPv6 seems to be the same as your website on IPv4.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [],
}
]},
{ "title": "Signed domain name (DNSSEC)",
"checks": [
{"title": "DNSSEC existence",
"passed": True,
"status": "required",
"done": True,
"note": "Found SOA and RRSIG records for this domain",
"data": [
{"domain": "shadowtrackr.com",
"registrar": "Squarespace Domains II LLC"
}
]},
{"title": "DNSSEC validity",
"passed": True,
"status": "required",
"done": True,
"note": "The RRSIG signature for the SOA record is fully validated",
"data": [
{"domain": "shadowtrackr.com",
"status": "secure"
}
]}
]},
{"title": "Secure connection (HTTPS)",
"checks": [
{"title": "HTTPS available",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"HTTPS existent": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HTTPS existent": "yes"
}
]},
{"title": "HTTPS redirect",
"passed": True,
"status": "required",
"done": True,
"note": "The redirect must be to the https:// version of the website on the same URL",
"data": [
{"Web server IP address": "91.98.127.83",
"HTTPS redirect": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HTTPS redirect": "yes"
}
]},
{"title": "HTTP Compression",
"passed": False,
"status": "optional",
"done": False,
"note": "",
"data": []
},
{"title": "HSTS",
"passed": True,
"status": "required",
"done": True,
"note": "The Strict-Transport-Security header must be present and have a minimal value of 31536000 (1 year)",
"data": [
{"Web server IP address": "91.98.127.83",
"HSTS": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HSTS": "yes"
}
]}
]},
{"title": "TLS",
"checks": [
{"title": "TLS Version",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"TLS Version": "TLS 1.2, TLS 1.3"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"TLS Version": "TLS 1.2, TLS 1.3"
}
]},
{"title": "Ciphers (Algorithm selections)",
"passed": 1,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_CHACHA20_POLY1305_SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-AES128-GCM-SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-CHACHA20-POLY1305",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_AES_256_GCM_SHA384",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_AES_128_GCM_SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-AES256-GCM-SHA384",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_CHACHA20_POLY1305_SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-AES128-GCM-SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-CHACHA20-POLY1305",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_AES_256_GCM_SHA384",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_AES_128_GCM_SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-AES256-GCM-SHA384",
"Status": "good"
}
],
{"title": "Cipher order",
"passed": True,
"status": "required",
"done": True,
"note":"You only have secure ciphers, this test is not applicable",
"data": []
},
{"title": "Key exchange parameters",
"passed": False,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected parameters": "ffdhe3072",
"status": "insufficient"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected parameters": "ffdhe2048",
"status": "phase out"
}
],
{"title": "Hash function for Key exchange",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"SHA2 support for signatures": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"SHA2 support for signatures": "yes"
}
]},
{"title": "TLS compression",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"TLS compression": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"TLS compression": "no"
}
]},
{"title": "Secure renegotiation",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Secure renegotiation": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Secure renegotiation": "yes"
}
]},
{"title": "Client-initiated renegotiation",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Client-initiated renegotiation": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Client-initiated renegotiation": "no"
}
]},
{
"title": "0-RTT",
"passed": False,
"status": "required",
"done": False,
"note": "Found TLS 1.3, but this check is not implemented yet. It's a rare attack.",
"data": []
},
{"title": "OCSP stapling",
"passed": 2,
"status": "optional",
"done": True,
"note": "Supporting OCSP stapling is better, but this check is optional",
"data": [
{"Web server IP address": "91.98.127.83",
"OCSP stapling": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"OCSP stapling": "no"
}
]}
]},
{"title": "Certificate",
"checks": [
{"title": "Trust chain of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Untrusted certificate chain": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Untrusted certificate chain": "none"
}
]},
{"title": "Public key of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected signature parameters": "EC 256 bits (curve P-256)",
"Status:": "sufficient"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected signature parameters": "EC 256 bits (curve P-256)",
"Status:": "sufficient"
}
]},
{"title": "Signature of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected hash algorithm": "ECDSA with SHA384",
"Status:": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected hash algorithm": "ECDSA with SHA384",
"Status:": "good"
}
]},
{"title": "Domain name on certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Unmatched domains on certificate": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Unmatched domains on certificate": "none"
}
]},
{"title": "CAA for domain",
"passed": False,
"status": "recommended",
"done": True,
"note": "No CAA records found at all",
"data": []
}
]},
{"title": "DANE",
"checks": [
{"title": "DANE existence",
"passed": False,
"status": "optional",
"done": True,
"note": "",
"data": [
{"Domain": "_443._tcp.shadowtrackr.com",
"DANE TLSA record existent": "no"
}
]},
{"title": "DANE validity",
"passed": False,
"status": "optional",
"done": False,
"note": "This check is not done because no TLSA records where found",
"data": []
}
]},
{"title": "HTTP security headers",
"checks": [
{ "title": "X-Frame-Options",
"passed": True,
"status": "optional",
"done": True,
"note": "X-Frame-Options (XFO) implemented via the CSP frame-ancestors directive",
"data": [
{"Web server IP address": "91.98.127.83",
"X-Frame-Options value": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"X-Frame-Options value": "none"
}
]},
{"title": "X-Content-Type-Options",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"X-Content-Type-Options value": "nosniff"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"X-Content-Type-Options value": "nosniff"
}
]},
{"title": "Content-Security-Policy",
"passed": False,
"status": "recommended",
"done": True,
"note": "Content Security Policy (CSP) implemented unsafely. This includes 'unsafe-inline' or data: inside script-src, overly broad sources such as https: inside object-src or script-src, or not restricting the sources for object-src or script-src.",
"data": [
{"Web server IP address": "91.98.127.83",
"CSP value": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"CSP value": "none"
}
]},
{"title": "Referrer-Policy existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Referrer-Policy value": "strict-origin"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Referrer-Policy value": "strict-origin"
}
]}
]},
{"title": "Other security options",
"checks": [
{"title": "Security.txt",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Findings": "exists and valid"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Findings": "exists and valid"
}
]}
]},
{title": "RPKI name servers of domain",
"checks": [
{"title": "Route Origin Authorisation existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"IP address": "216.239.32.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e1.googledomains.com",
"IP address": "2001:4860:4802:32::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"IP address": "216.239.36.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"IP address": "2001:4860:4802:36::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"IP address": "216.239.34.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"IP address": "2001:4860:4802:34::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"IP address": "216.239.38.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"IP address": "2001:4860:4802:38::6e",
"RPKI Route Origin Authorization": "ok"
}
]},
{"title": "Route announcement validity",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Nameserver": "ns-cloud-e1.googledomains.com",
"BGP Route Prefix": "216.239.32.0/24",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e1.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e3.googledomains.com",
"BGP Route Prefix": "216.239.32.0/19",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e3.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e2.googledomains.com",
"BGP Route Prefix": "216.239.34.0/24",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e2.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e4.googledomains.com",
"BGP Route Prefix": "216.239.32.0/19",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e4.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
}
]}
]},
{"title": "RPKI web server",
"checks": [
{"title": "Route Origin Authorisation existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"URL": "shadowtrackr.com",
"IP address": "2a01:4f8:1c1a:e20::1",
"RPKI Route Origin Authorization": "ok"
}
]},
{"title": "Route announcement validity",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Url": "shadowtrackr.com",
"BGP Route Prefix": "2a01:4f8::/32",
"ASN": 24940,
"RPKI Origin Validation state": "valid"
}
]}
]}
]}
]}
],
"error": ""
}