Security
· 13 checks — HTTP headers, CSP, TLS handshake, and cookie hygiene rolled into one auditable list.FContent Security PolicyActionNo enforcing CSP policy foundFIX
CSP is the most effective defense against XSS attacks. Add a Content-Security-Policy header to restrict resource loading.
default-src 'self'Without a CSP, a single XSS bug can exfiltrate everything users type — credentials, payment data, session tokens.
Learn more ▾ ▴
Content-Security-Policy is the browser-enforced firewall against XSS. With a strict CSP, a script injection that would otherwise steal session cookies is silently blocked. Without it, your only defense is hoping every input on every form is escaped correctly forever. Start in Report-Only mode, fix violations, then graduate to enforcing.
Source: OWASP / MDN
DSubresource IntegrityAction1 of 15 external resources have SRIFIX
| Tag | Domain | Integrity |
|---|---|---|
| <link> | fonts.googleapis.com | ✗ Missing |
| <link> | fonts.googleapis.com | ✗ Missing |
| <script> | www.tns-counter.ru | ✗ Missing |
| <script> | mc.yandex.ru | ✗ Missing |
| <script> | mc.yandex.ru | ✗ Missing |
| <script> | www.gstatic.com | ✓ Protected |
| <script> | platform.twitter.com | ✗ Missing |
| <script> | cdnjs.cloudflare.com | ✗ Missing |
| <script> | yastatic.net | ✗ Missing |
| <script> | yastatic.net | ✗ Missing |
| <script> | an.yandex.ru | ✗ Missing |
| <script> | cdn.jsdelivr.net | ✗ Missing |
| <script> | yandex.ru | ✗ Missing |
| <script> | www.google.com | ✗ Missing |
| <script> | yastatic.net | ✗ Missing |
DEmail SecurityActionDMARC: noneFIX
This only monitors, it doesn't block spoofed emails. Change to p=quarantine or p=reject.
DMARC p=none collects reports but doesn't actually block spoofed mail — phishing emails still reach inboxes.
Learn more ▾ ▴
DMARC's three policies are p=none (monitor only), p=quarantine (mark as spam), and p=reject (bounce). Most domains start at p=none to gather data, but stay there forever, leaving spoofers unblocked. After 30 days of clean DMARC reports, graduate to p=quarantine, then p=reject.
Source: DMARC.org / NIST
DPermissions-PolicyActionNo header setFIX
No Permissions-Policy header set.
Without this header, embedded iframes can request access to sensitive device features.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=()
Dsecurity.txtActionNo /.well-known/security.txt publishedFIX
security.txt
No security.txt found at /.well-known/security.txt
CSecurity HeadersAction5 of 10 headers properly configuredREVIEW
CSP is the most important header for preventing XSS attacks. See the CSP section for detailed analysis.
default-src 'self'Without a CSP, a single XSS bug can exfiltrate everything your users type — including credentials.
Learn more ▾ ▴
Content-Security-Policy is the browser-enforced firewall against XSS. With a strict CSP, a script injection that would otherwise steal session cookies or rewrite the page is silently blocked. Without it, your only defense is hoping every input on every form is escaped correctly forever.
Source: OWASP / MDN
strict-origin-when-cross-originWeak Referrer-Policy values leak full URLs (with query params, tokens, IDs) to every third-party resource on the page.
Learn more ▾ ▴
Default referrer behavior shares the full referring URL with images, scripts, and other resources from third-party origins. If your URLs contain tokens, session IDs, or user emails (in query strings or paths), every third-party tracker gets them. Set `Referrer-Policy: strict-origin-when-cross-origin` (or stricter).
Source: MDN Referrer-Policy / W3C
Controls which browser features (camera, microphone, geolocation) are allowed. Set it to restrict unused features.
geolocation=(), camera=(), microphone=()Permissions-Policy locks down browser APIs you don't use — without it, every page can request camera/mic/geolocation if XSS lands.
Learn more ▾ ▴
By default every page can request the camera, microphone, geolocation, payment APIs, and dozens more. Permissions-Policy turns off the ones you don't need so a future bug can't quietly start using them. It's a defense-in-depth header — one line, big surface reduction.
Source: MDN / W3C
COOP isolates your browsing context, preventing cross-origin side-channel attacks. Set to 'same-origin'.
same-originCOOP isolates your top-level browsing context from cross-origin windows — without it, popup-based side-channel attacks remain possible.
Learn more ▾ ▴
Cross-Origin-Opener-Policy: same-origin prevents cross-origin pages from sharing a browsing-context group with yours. This blocks cross-window references that enable Spectre-style timing attacks and tab-nabbing. Required if you want to enable SharedArrayBuffer.
Source: MDN / web.dev
COEP prevents loading cross-origin resources without explicit permission. Required for SharedArrayBuffer and high-resolution timers.
require-corpCOEP enforces that all embedded resources opt-in to cross-origin embedding — required for cross-origin isolation features.
Learn more ▾ ▴
Cross-Origin-Embedder-Policy: require-corp ensures every embedded resource (script, iframe, image) explicitly allows being loaded cross-origin. Combined with COOP, this enables the cross-origin-isolated context that unlocks SharedArrayBuffer, high-resolution timers, and other powerful APIs.
Source: MDN / web.dev
CKnown vulnerability matchesAction19 known vulnerability match(es) against detected techREVIEW
Known Vulnerabilities
| Library | Version | Severity | Summary | Fixed In |
|---|---|---|---|---|
| AngularJS | 1.6.6 | low | XSS through SVG if enableSvg is set | 1.6.9 |
| AngularJS | 1.6.6 | high | Prototype pollution | 1.7.9 |
| AngularJS | 1.6.6 | medium | XSS via JQLite DOM manipulation functions in AngularJS | 1.8.0 |
| AngularJS | 1.6.6 | medium | XSS may be triggered in AngularJS applications that sanitize user-controlled HTML snippets before passing them to JQLite methods like JQLite.prepend, JQLite.after, JQLite.append, JQLite.replaceWith, JQLite.append, new JQLite and angular.element. | 1.8.0 |
| AngularJS | 1.6.6 | medium | angular vulnerable to regular expression denial of service via the $resource service | 1.8.4 |
| AngularJS | 1.6.6 | medium | angular vulnerable to regular expression denial of service via the angular.copy() utility | 1.8.4 |
| AngularJS | 1.6.6 | medium | Angular (deprecated package) Cross-site Scripting | 1.8.4 |
| AngularJS | 1.6.6 | medium | angular vulnerable to regular expression denial of service via the <input type="url"> element | 1.8.4 |
| AngularJS | 1.6.6 | low | AngularJS improperly sanitizes SVG elements | 1.8.4 |
| AngularJS | 1.6.6 | low | AngularJS allows attackers to bypass common image source restrictions | 1.8.4 |
| AngularJS | 1.6.6 | high | angular vulnerable to super-linear runtime due to backtracking | 1.8.4 |
| AngularJS | 1.6.6 | low | AngularJS allows attackers to bypass common image source restrictions | 1.8.4 |
| AngularJS | 1.6.6 | medium | AngularJS Incomplete Filtering of Special Elements vulnerability | 1.8.4 |
| AngularJS | 1.6.6 | medium | AngularJS Incomplete Filtering of Special Elements vulnerability | 1.9.8 |
| AngularJS | 1.6.6 | medium | AngularJS Regular expression Denial of Service (ReDoS) | 1.9.9 |
| AngularJS | 1.6.6 | low | End-of-Life: Long term support for AngularJS has been discontinued as of December 31, 2021 | 1.999 |
| jQuery | 3.2.1 | medium | jQuery before 3.4.0, as used in Drupal, Backdrop CMS, and other products, mishandles jQuery.extend(true, {}, ...) because of Object.prototype pollution | 3.4.0 |
| jQuery | 3.2.1 | medium | passing HTML containing <option> elements from untrusted sources - even after sanitizing it - to one of jQuery's DOM manipulation methods (i.e. .html(), .append(), and others) may execute untrusted code. | 3.5.0 |
| jQuery | 3.2.1 | medium | Regex in its jQuery.htmlPrefilter sometimes may introduce XSS | 3.5.0 |
ATLS & CertificatesTLS 1.3, 7 checks passedPASS
Renew the certificate before it expires to avoid browser warnings.
Cert expiry within the renewal window — fix now while there's no user impact, instead of after expiry when there's a full outage.
Learn more ▾ ▴
Most CAs recommend renewal at 30 days remaining. Inside that window, schedule the renewal immediately and verify auto-renewal is configured if applicable. Don't wait until 7 days; weekend / holiday timing can leave you exposed.
Source: Let's Encrypt / CA renewal best practice
HTTP/2 provides multiplexing and header compression for better performance.
HTTP/1.1 forces the browser to make sequential requests, multiplying latency on every page.
Learn more ▾ ▴
HTTP/2 (and HTTP/3) multiplex many requests over a single connection, eliminating head-of-line blocking. HTTP/1.1 forces the browser to either queue requests or open many parallel connections — both worse. Most modern web servers support HTTP/2 with one config line.
Source: MDN Web Docs
Certificate Chain
A+JS Library VulnerabilitiesNo known vulnerabilitiesPASS
No known JavaScript library vulnerabilities detected.
A+Information LeakageNo exposuresPASS
No sensitive files exposed — all paths returned 404.
| Path | Status | Category | Risk |
|---|---|---|---|
| /.git/HEAD | ✓ Not found | Version Control | — |
| /.git/config | ✓ Not found | Version Control | — |
| /.svn/entries | ✓ Not found | Version Control | — |
| /.env | ✓ Not found | Configuration | — |
| /.env.local | ✓ Not found | Configuration | — |
| /.env.production | ✓ Not found | Configuration | — |
| /wp-config.php | ✓ Not found | Configuration | — |
| /.htaccess | ✓ Not found | Configuration | — |
| /phpinfo.php | ✓ Not found | Debug | — |
| /server-status | ✓ Not found | Debug | — |
| /server-info | ✓ Not found | Debug | — |
| /.well-known/security.txt | ✓ Not found | Security Policy | — |
ACORS ConfigurationOrigin: admin.tass.ruPASS
| Header | Value | Status |
|---|---|---|
| Access-Control-Allow-Origin | admin.tass.ru | ✓ |
Origin reflection test
Some servers mirror the request Origin header, which can be exploited. Test manually:
curl -sI -H "Origin: https://evil.com" <url> | grep -i access-control