missing-noopener
✗ 1 violation(s)
Links that open in a new tab/window without rel="noopener" allow the destination page to access the originating page via window.opener, enabling tabnabbing attacks.
javascript-url
✓ Passed
Links with javascript: URLs execute code when clicked, which can be exploited for XSS if the URL content is user-controlled.
missing-csrf-token
✗ 1 violation(s)
Forms that modify state (POST, PUT, DELETE) should include a CSRF token to prevent cross-site request forgery attacks where malicious sites submit requests on behalf of authenticated users.
sensitive-autocomplete
✗ 1 violation(s)
Sensitive input fields (passwords, credit cards, SSN) that allow autocomplete may have their values cached by the browser, creating a security risk on shared computers.
insecure-form-action
✓ Passed
Forms that submit data to HTTP (non-HTTPS) URLs expose the submitted data to interception via man-in-the-middle attacks.
inline-event-handlers
✓ Passed
Inline event handlers (onclick, onload, onerror, etc.) execute JavaScript directly in HTML attributes. These are common XSS vectors and violate Content Security Policy best practices.
missing-iframe-sandbox
✓ Passed
Iframes loading external content without the sandbox attribute can execute scripts, submit forms, and potentially access the parent page. The sandbox attribute restricts these capabilities.
dangerous-iframe-sandbox
✓ Passed
Iframes with both allow-scripts and allow-same-origin in the sandbox attribute can remove the sandbox via JavaScript, effectively bypassing all restrictions.
mixed-content
✓ Passed
HTTPS pages that load resources over HTTP (mixed content) weaken the security of the connection. Active mixed content (scripts, iframes) is blocked by browsers, while passive mixed content (images, audio, video) may display warnings.
missing-csp-meta
✗ 1 violation(s)
Content Security Policy (CSP) helps prevent XSS attacks by restricting resource loading. While CSP is best set via HTTP headers, a meta tag fallback can provide some protection.
base-tag-detected
✓ Passed
The <base> tag changes how relative URLs are resolved. If a page allows user-controlled base tags (through injection), attackers can redirect relative URLs to malicious servers.
no-frame-protection-meta
✗ 1 violation(s)
Pages without frame protection can be embedded in attacker-controlled iframes, enabling clickjacking attacks where users are tricked into clicking hidden elements.
missing-sri
✓ Passed
External scripts and stylesheets loaded from CDNs or third-party sources should include integrity attributes to ensure the resource has not been tampered with.
weak-sri-hash
✓ Passed
Subresource Integrity hashes using SHA-256 are acceptable but SHA-384 or SHA-512 provide stronger security guarantees.
exposed-email
✓ Passed
Email addresses visible in page source can be harvested by spam bots. Consider using obfuscation, contact forms, or JavaScript-based rendering.
exposed-api-key
✓ Passed
API keys, tokens, or secrets appear to be exposed in page source or inline scripts. These credentials can be extracted and misused by attackers.
comments-with-secrets
✓ Passed
HTML comments are visible in page source and may contain sensitive information like TODO notes, credentials, internal paths, or debugging info that should not be exposed in production.
shadow-dom-inline-handlers
✓ Passed
Inline event handlers within Shadow DOM can sometimes bypass Content Security Policy restrictions, creating XSS vulnerabilities even on CSP-protected pages.
open-shadow-dom
✓ Passed
Elements with open Shadow DOM (mode: "open") can have their shadow roots accessed via JavaScript. If the shadow DOM contains sensitive data or forms, this could be a security concern.
shadow-dom-form-no-csrf
✓ Passed
Forms inside Shadow DOM components may be overlooked when implementing CSRF protection, leaving them vulnerable to cross-site request forgery attacks.
dom-clobbering-globals
✓ Passed
Elements with id or name attributes that match global window/document properties can "clobber" these properties. If application code assumes these are native objects, it may lead to XSS or logic bugs.
dom-clobbering-collections
✓ Passed
Multiple elements sharing the same name attribute create an HTMLCollection. Attackers can inject elements to manipulate collections and bypass security checks.
form-property-clobbering
✓ Passed
Form elements with names like "action", "method", "submit" clobber the corresponding form properties. This can break form submission or redirect forms to attacker-controlled URLs.
ad-network-no-sri
✓ Passed
Scripts loaded from advertising networks without Subresource Integrity are high-risk supply chain attack vectors. Ad networks are frequently targeted and have been compromised in the past.
ad-iframe-no-sandbox
✓ Passed
Iframes loading content from advertising networks without sandbox restrictions can execute arbitrary scripts and potentially access parent page data.
third-party-document-write
✓ Passed
Third-party scripts that use document.write() can inject arbitrary content into the page. Modern browsers may block these on slow connections, causing functionality issues.
excessive-third-party
✓ Passed
Pages with many third-party scripts have increased attack surface. Each external script is a potential supply chain attack vector and data exfiltration point.
tracking-on-sensitive-page
✓ Passed
Tracking and analytics scripts on pages containing login forms, payment forms, or sensitive data may inadvertently leak user information to third parties.
script-wrong-extension
✓ Passed
Scripts loaded with non-JavaScript file extensions (.txt, .json, .html, etc.) may indicate misconfiguration. This can also be used to bypass WAF rules that only inspect .js files.
stylesheet-wrong-extension
✓ Passed
Stylesheets loaded with non-CSS file extensions may indicate misconfiguration. CSS can be used for data exfiltration attacks, so unusual sources should be reviewed.
script-type-misuse
✓ Passed
Scripts with type attributes like "text/plain", "text/template", or custom types do not execute by default but contain code that could be activated by other scripts, potentially bypassing CSP.
data-uri-script
✓ Passed
Scripts loaded from data: URIs execute inline and can bypass some Content Security Policy configurations. They may also be used to hide malicious code.
url-prototype-pollution
✓ Passed
URL query parameters containing __proto__, constructor, or prototype may exploit prototype pollution vulnerabilities if the URL is parsed with vulnerable code.
unsafe-object-merge
✓ Passed
Inline scripts using Object.assign, spread operators, or deep merge with URL/cookie/postMessage data may be vulnerable to prototype pollution attacks.
polluted-prototype
✓ Passed
Object.prototype has unexpected properties, indicating successful prototype pollution. This is a runtime check that detects if pollution has already occurred.
modifies-prototype
✓ Passed
Inline scripts that modify Object.prototype, Array.prototype, or other built-in prototypes can cause unexpected behavior and security issues across all code on the page.
link-redirect-parameter
✓ Passed
Links with URL parameters like "redirect", "return", "next", or "url" can be exploited for open redirect attacks if the target URL is not validated.
form-redirect-parameter
✓ Passed
Forms with redirect parameters in action URL or hidden fields can be exploited for open redirect attacks, especially if combined with CSRF.
meta-refresh-redirect
✓ Passed
Meta refresh tags that redirect to external URLs can be exploited for phishing. Attackers may inject content that eventually redirects users to malicious sites.
js-location-redirect
✓ Passed
Inline scripts that read from location (search, hash, href) and use it for redirects via location.href, location.assign, or window.open are vulnerable to open redirect.
opener-accessible
✓ Passed
If window.opener is accessible and not null, the opening page can be redirected by this page. This is a tabnabbing vector even on the opened page.
postmessage-no-origin-check
✓ Passed
Scripts that add message event listeners without checking event.origin can receive malicious messages from any origin, leading to XSS or data manipulation.
postmessage-wildcard-origin
✓ Passed
Calling postMessage with "*" as the target origin allows any window to receive the message, potentially leaking sensitive data to malicious sites.
postmessage-dangerous-sink
✓ Passed
Scripts that handle postMessage events and use the data in dangerous sinks (innerHTML, eval, document.write) without sanitization are vulnerable to XSS.
localstorage-sensitive-data
✓ Passed
localStorage persists indefinitely and is accessible to any JavaScript on the origin. Storing sensitive data (tokens, passwords, PII) makes it vulnerable to XSS attacks.
sessionstorage-sensitive-data
✓ Passed
sessionStorage is accessible to any JavaScript on the origin. While it clears on tab close, storing sensitive data like auth tokens makes it vulnerable to XSS during the session.
storage-unencrypted-data
✓ Passed
Large JSON objects or plaintext data in localStorage/sessionStorage may contain sensitive information that should be encrypted or not stored client-side.
storage-no-error-handling
✓ Passed
Scripts that access localStorage/sessionStorage without try-catch may fail in private browsing mode or when storage is full, potentially breaking functionality.
dangling-markup-attribute
✓ Passed
Elements with attributes containing unterminated quotes or suspicious URL patterns may be vulnerable to dangling markup injection, where subsequent page content is captured and sent to an attacker.
base-tag-hijacking
✓ Passed
A <base> tag with an external href can hijack all relative URLs on the page, redirecting scripts, stylesheets, and links to an attacker-controlled server.
form-external-action
✓ Passed
Forms that submit data to external domains could be exfiltrating sensitive information. This could be intentional (third-party services) or malicious (injected forms).
meta-refresh-exfiltration
✓ Passed
Meta refresh tags that redirect to external URLs with query parameters could be used to exfiltrate page content captured via dangling markup.
noscript-dangling-markup
✓ Passed
Noscript tags containing images, iframes, or other elements with external URLs could be used for dangling markup attacks against users with JavaScript disabled.
css-external-import
✓ Passed
CSS @import rules loading stylesheets from external domains can be used to inject malicious styles or exfiltrate data via CSS selectors.
css-external-url
✓ Passed
Inline styles using url() to load resources from external domains can be used for tracking, data exfiltration, or loading malicious content.
css-attribute-selector
✓ Passed
CSS attribute selectors on sensitive fields (password, credit card) combined with external resources can be used to exfiltrate form data character by character.
css-expression
✓ Passed
CSS expressions (expression()) and behaviors (behavior:url()) are legacy IE features that can execute JavaScript, creating XSS vulnerabilities.
idn-homograph
✓ Passed
Links containing internationalized domain names (IDN) with characters that visually resemble ASCII characters can be used for phishing (e.g., аpple.com using Cyrillic "а").
rtl-override
✓ Passed
Right-to-left override characters (U+202E) can be used to disguise malicious URLs or file names by reversing text direction, making "exe.txt" appear as "txt.exe".
null-byte-url
✓ Passed
URLs containing null bytes (%00), backspace, or other control characters can be used to bypass security filters or exploit vulnerable parsers.
invisible-characters
✓ Passed
Zero-width characters (ZWSP, ZWNJ, ZWJ) in URLs or important text can hide malicious content or be used for watermarking/tracking.
innerhtml-sink
✓ Passed
Scripts that use innerHTML, outerHTML, or insertAdjacentHTML with data from URL parameters, cookies, or storage are vulnerable to XSS attacks.
document-write-sink
✓ Passed
document.write and document.writeln can be exploited for XSS, especially when combined with user input. They also block page rendering.
eval-usage
✓ Passed
eval(), Function(), setTimeout(string), and setInterval(string) can execute arbitrary code and are dangerous when used with user input.
user-controlled-selector
✓ Passed
Using querySelector/querySelectorAll with user-controlled input can lead to DOM clobbering exploitation or unintended element selection.
template-literal-injection
✓ Passed
Template literals containing user input that are inserted into the DOM via innerHTML or similar can lead to XSS if not properly escaped.
service-worker-cross-origin
✓ Passed
Scripts attempting to register service workers from a different origin could indicate malicious activity. Service workers have significant power over network requests.
service-worker-broad-scope
✓ Passed
Service workers registered with root scope (/) can intercept all requests for the origin. This may be intentional but increases the impact of any service worker vulnerability.
service-worker-no-https
✓ Passed
Service workers require HTTPS to function (except on localhost). If the page is not served over HTTPS, service workers will fail to register.
service-worker-suspicious-patterns
✓ Passed
Service worker code with patterns that intercept all requests, modify responses, or communicate with external servers could be malicious.
fullscreen-abuse
✓ Passed
The Fullscreen API can be used for phishing by displaying fake UI elements that appear to be from the browser or OS. Elements like iframes or divs requesting fullscreen should be reviewed.
pointer-events-manipulation
✓ Passed
CSS pointer-events: none can be used to create invisible overlays that pass clicks through to underlying elements, enabling clickjacking attacks.
opacity-hiding
✓ Passed
Elements with very low opacity positioned over other content can be used for clickjacking by making the user think they are clicking on visible elements.
user-select-manipulation
✓ Passed
Disabling text selection (user-select: none) on elements containing links or forms can prevent users from verifying URLs or content.
cookie-no-httponly
✓ Passed
Cookies containing session tokens or authentication data that are accessible to JavaScript (no HttpOnly flag) are vulnerable to theft via XSS attacks.
cookie-no-secure
✗ 1 violation(s)
Cookies set on HTTPS pages without the Secure flag can be transmitted over unencrypted HTTP connections if the user visits the HTTP version of the site.
cookie-no-samesite
✗ 1 violation(s)
Cookies without the SameSite attribute (or with SameSite=None) may be sent with cross-site requests, making them vulnerable to CSRF attacks.
cookie-broad-scope
✗ 1 violation(s)
Cookies set with a leading dot domain (e.g., .example.com) or root path (/) are accessible to all subdomains and paths, potentially exposing them to less secure parts of the site.
cookie-sensitive-value
✓ Passed
Cookies containing values that look like JWTs, API keys, or encoded credentials may be exposing sensitive data that should be handled server-side.
websocket-insecure
✓ Passed
Using unencrypted WebSocket connections (ws://) on HTTPS pages exposes the WebSocket traffic to man-in-the-middle attacks, defeating the purpose of HTTPS.
websocket-cross-origin
✓ Passed
WebSocket connections to different origins may expose data to third parties. Ensure cross-origin WebSocket connections are intentional and to trusted endpoints.
websocket-no-auth
✓ Passed
WebSocket connections that do not appear to include authentication tokens in the URL or initial message may be vulnerable to unauthorized access.
websocket-message-sink
✓ Passed
WebSocket messages used directly in innerHTML, eval, or similar sinks without validation can lead to XSS if the server sends malicious data or is compromised.
svg-script-content
✓ Passed
SVG elements can contain <script> tags or event handlers that execute JavaScript. Many sanitizers fail to properly handle SVG namespaces, creating mXSS vulnerabilities.
mathml-namespace-abuse
✓ Passed
MathML elements can be used for namespace confusion attacks where elements are parsed differently than expected, bypassing sanitizers.
nested-parsing-abuse
✓ Passed
Deeply nested elements or unusual combinations (like noscript inside noscript, or template inside foreignObject) can cause parser confusion leading to mXSS.
style-tag-abuse
✓ Passed
Style tags inside SVG, MathML, or other foreign content can behave unexpectedly and may be used to inject CSS or escape to HTML context.
unsafe-dom-parsing
✓ Passed
Using DOMParser to parse HTML and then inserting it into the document without sanitization can lead to XSS, as DOMParser does not sanitize content.
private-ip-access
✓ Passed
Detects JavaScript making requests to private IP ranges, which could be exploited via DNS rebinding
host-header-unvalidated
✓ Passed
Detects signs that Host header may not be validated, enabling DNS rebinding attacks
websocket-rebinding-risk
✓ Passed
Detects WebSocket connections without origin validation that could be exploited via DNS rebinding
cors-rebinding-risk
✓ Passed
Detects CORS configurations that could be exploited in conjunction with DNS rebinding
unsafe-string-comparison
✓ Passed
Detects string comparisons that may be vulnerable to timing attacks
early-return-auth
✓ Passed
high-resolution-timing
✓ Passed
array-length-timing
✓ Passed
missing-vary-header
✗ 1 violation(s)
Detects responses that may be cached without proper Vary header
unkeyed-header-reflection
✓ Passed
cache-control-misconfigured
✓ Passed
parameter-cache-reflection
✓ Passed
Detects URL parameter reflection that could enable cache poisoning
fat-get-request
✓ Passed
cloud-resource-unclaimed
✓ Passed
Detects references to cloud services vulnerable to subdomain takeover
dangling-cname-js
✓ Passed
Detects JavaScript references to subdomains that could be taken over
broken-external-resource
✓ Passed
Detects external resources that could indicate takeover opportunity
mail-subdomain-reference
✓ Passed
cors-wildcard-credentials
✓ Passed
cors-null-origin
✓ Passed
cors-origin-reflection
✓ Passed
cors-preflight-permissive
✓ Passed
cors-internal-access
✓ Passed
content-length-manipulation
✓ Passed
transfer-encoding-usage
✓ Passed
ambiguous-request
✓ Passed
http2-downgrade
✓ Passed
json-parse-reviver
✓ Passed
Detects JSON.parse with reviver function that could execute code during parsing
function-constructor-deser
✓ Passed
Detects use of Function constructor which can execute arbitrary code
eval-deserialization
✓ Passed
Detects eval usage for parsing data, which enables code execution
jquery-deser-methods
✓ Passed
Detects jQuery methods that can deserialize untrusted data unsafely
postmessage-deser
✓ Passed
Detects postMessage handlers that parse data without origin validation
toctou-pattern
✓ Passed
Detects time-of-check-time-of-use patterns that could be exploited
double-submit-risk
✓ Passed
Detects forms or actions vulnerable to double-submit race conditions
parallel-fetch-race
✓ Passed
Detects parallel fetch calls that might create race conditions
localstorage-race
✓ Passed
missing-permissions-policy
✓ Passed
Detects pages using sensitive features without Permissions Policy restrictions
iframe-allow-permissive
✓ Passed
autoplay-without-policy
✓ Passed
Detects media autoplay usage that should be controlled by policy
sensor-access
✓ Passed
Detects access to motion sensors that could be used for fingerprinting
document-domain-usage
✓ Passed
Detects document.domain usage which is deprecated and weakens security
math-random-security
✓ Passed
hardcoded-crypto-secrets
✓ Passed
deprecated-crypto-api
✓ Passed
weak-password-hashing
✓ Passed
crypto-subtle-validation
✓ Passed
catastrophic-backtracking
✓ Passed
Detects regex patterns vulnerable to catastrophic backtracking
unbounded-regex-input
✓ Passed
Detects regex with unbounded repetition applied to user input
email-regex-redos
✓ Passed
Detects email validation regex that may be vulnerable to ReDoS
url-regex-redos
✓ Passed
regex-from-input
✓ Passed
internal-package-reference
✓ Passed
Detects references to package names that appear to be internal/private
uncommon-cdn-package
✓ Passed
Detects CDN references to packages that may be vulnerable to confusion attacks
dynamic-import-risk
✓ Passed
Detects dynamic imports that could be vulnerable to dependency confusion
scoped-package-risk
✓ Passed
Detects scoped packages that could be hijacked if scope is not registered
url-param-to-fetch
✓ Passed
user-input-url
✓ Passed
proxy-endpoint-usage
✓ Passed
Detects usage of proxy or redirect endpoints that could be exploited
webhook-config
✓ Passed
media-url-from-input
✓ Passed
window-opener-access
✓ Passed
window-open-no-noopener
✓ Passed
cross-origin-frame-access
✓ Passed
postmessage-to-opener
✓ Passed
sensitive-data-new-tab
✓ Passed
Detects links that open in new tab with sensitive URL parameters
polyglot-file-pattern
✓ Passed
jsonp-endpoint
✓ Passed
data-url-executable
✓ Passed
blob-url-xss
✓ Passed
mime-sniffing-risk
✓ Passed
exposed-admin-routes
✓ Passed
JavaScript bundles contain references to admin panels, debug endpoints, or internal routes. Attackers can discover these by searching the source code.
exposed-source-maps
✓ Passed
JavaScript source maps (*.map files) are referenced, which could expose original source code, internal paths, and potentially sensitive comments or logic to attackers.
bypassable-client-validation
✓ Passed
Form controls use client-side only validation (disabled buttons, maxlength, pattern) without apparent server-side enforcement. Attackers can bypass these by modifying the DOM or intercepting requests.
hardcoded-secrets
✓ Passed
JavaScript contains hardcoded credentials, coupon codes, encryption keys, or other secrets that should not be exposed in client-side code.
debug-endpoints-exposed
✓ Passed
Page contains references to debug endpoints, stack trace information, or development tools that should not be accessible in production.
vulnerable-libraries
✗ 2 violation(s)
The page loads JavaScript libraries with known security vulnerabilities. These should be updated to patched versions.
php-error-exposure
✓ Passed
PHP error messages are visible in the page, revealing server paths, code structure, and potentially sensitive configuration details. This indicates display_errors is enabled in production.
phpinfo-exposed
✓ Passed
The page appears to be a phpinfo() output, which reveals extensive information about PHP configuration, server environment, and installed modules.
php-session-in-url
✓ Passed
PHP session ID (PHPSESSID) is passed in the URL, making it vulnerable to session fixation attacks, referrer leakage, and browser history exposure.
aspnet-error-exposure
✓ Passed
ASP.NET error page (YSOD - Yellow Screen of Death) is visible, revealing stack traces, source code snippets, and server configuration details.
aspnet-viewstate-vulnerable
✓ Passed
ASP.NET ViewState is present and may be vulnerable to tampering or deserialization attacks if not properly protected with MAC validation.
aspnet-version-disclosure
✓ Passed
ASP.NET version information is disclosed in page content or meta tags, helping attackers identify potential vulnerabilities for that version.
java-error-exposure
✓ Passed
Java exception details or stack traces are visible in the page, revealing class names, method signatures, and potentially sensitive internal paths.
java-session-in-url
✓ Passed
Java session ID (JSESSIONID) is present in URLs, making it vulnerable to session fixation, referrer leakage, and URL sharing attacks.
wordpress-version-disclosure
✓ Passed
WordPress version is disclosed through meta tags, script URLs, or readme files. This helps attackers identify known vulnerabilities for that version.
wordpress-sensitive-paths
✓ Passed
References to sensitive WordPress paths like wp-config.php, xmlrpc.php, or debug.log indicate potential security risks.
cms-detection
✓ Passed
A content management system (CMS) has been detected. This information helps identify potential platform-specific vulnerabilities.
angular-debug-mode
✓ Passed
Angular is running in development/debug mode, which provides detailed error messages and debugging information that should not be exposed in production.
react-development-build
✓ Passed
React is running in development mode, which is slower and includes extra warnings. Production builds should use minified React.
vue-development-mode
✓ Passed
Vue.js is running in development mode, which includes additional warnings and Vue DevTools support that should be disabled in production.
jquery-html-methods
✓ Passed
jQuery methods like .html(), .append(), .prepend(), .after(), .before(), and .replaceWith() can execute scripts when used with untrusted data.
jquery-selector-injection
✓ Passed
Passing user-controlled input to jQuery selector $() can lead to XSS if the input contains HTML, as jQuery parses HTML strings.
dom-open-redirect
✓ Passed
Assigning user-controlled input to location.href, location.assign(), location.replace(), or window.open() can lead to open redirect vulnerabilities.
history-api-abuse
✓ Passed
Using history.pushState() or history.replaceState() with user-controlled URLs can be used for phishing by spoofing the URL bar.
unsafe-response-injection
✓ Passed
Inserting fetch() or XMLHttpRequest response data directly into innerHTML without sanitization can lead to XSS if the response contains malicious content.
jsonp-callback-injection
✓ Passed
JSONP requests where the callback parameter is derived from user input can lead to XSS if the callback name is not properly validated.
dynamic-script-injection
✓ Passed
Creating script elements dynamically with user-controlled src URLs or content can lead to XSS or malicious script execution.
unsafe-setattribute
✓ Passed
Using setAttribute() to set src, href, or event handler attributes with user-controlled values can lead to XSS or open redirect.
tracking-pixels
✓ Passed
Invisible 1x1 pixel images or hidden images are commonly used for user tracking without consent. These can leak browsing data to third parties.
beacon-exfiltration
✓ Passed
navigator.sendBeacon() is used to send data that persists even when the page unloads. This can be used for tracking or data exfiltration.
invisible-iframes
✓ Passed
Iframes hidden via CSS (display:none, visibility:hidden, 0x0 size, off-screen positioning) can perform hidden actions like clickjacking, voting, or unauthorized transactions.
invisible-clickables
✗ 1 violation(s)
Links, buttons, or forms that are invisible or positioned off-screen can be used for clickjacking, hidden submissions, or SEO manipulation.
dns-prefetch-external
✓ Passed
DNS prefetch and preconnect to external domains can leak browsing information and be used for tracking even if resources are never loaded.
webrtc-ip-leak
✓ Passed
RTCPeerConnection can expose real IP addresses even when users are behind VPNs or proxies. This is a significant privacy concern.
browser-fingerprinting
✓ Passed
Scripts accessing multiple browser properties (screen size, plugins, fonts, WebGL, Canvas) together suggest device fingerprinting for tracking.
canvas-fingerprinting
✓ Passed
Canvas-based fingerprinting creates unique identifiers by rendering text/graphics and extracting pixel data. This enables cross-site tracking.
clipboard-hijacking
✓ Passed
Scripts that write to the clipboard can replace copied content with malicious payloads, potentially leading to code injection when users paste.
css-attribute-exfiltration
✓ Passed
CSS attribute selectors combined with background-image URLs can exfiltrate input values character by character without JavaScript.
technology-disclosure
✓ Passed
Server technology, framework versions, or generator information exposed in meta tags or HTML comments helps attackers identify known vulnerabilities.
geolocation-access
✓ Passed
Scripts accessing navigator.geolocation can track user's precise physical location. This should only be used when clearly necessary and with user consent.
notification-abuse
✓ Passed
Scripts requesting notification permissions can be used for spam, phishing, or social engineering attacks via browser notifications.
battery-api-abuse
✓ Passed
The Battery Status API can be used for device fingerprinting. Battery level, charging status, and time create a semi-unique identifier.
vibration-api-abuse
✓ Passed
The Vibration API can be abused for attention-grabbing malware, covert communication channels, or user annoyance attacks.
payment-api-usage
✓ Passed
The Payment Request API initiates payment flows. Ensure it is only triggered by explicit user action and clearly displays payment details.
bluetooth-api-usage
✓ Passed
The Web Bluetooth API can discover and connect to nearby Bluetooth devices. This poses privacy and security risks if misused.
webusb-api-usage
✓ Passed
The WebUSB API can access connected USB devices, potentially exposing sensitive hardware or enabling attacks on connected devices.
webserial-api-usage
✓ Passed
The Web Serial API can access serial ports, potentially communicating with industrial equipment, microcontrollers, or other sensitive devices.
media-device-enumeration
✓ Passed
Enumerating media devices (cameras, microphones) can be used for device fingerprinting by creating unique device ID lists.
audio-fingerprinting
✓ Passed
AudioContext with oscillator and analyser nodes can create unique audio fingerprints for cross-site tracking.
font-enumeration
✓ Passed
Iterating through fonts and measuring text width to detect installed fonts creates a unique device fingerprint.
webgl-fingerprinting
✓ Passed
Accessing WebGL debug renderer info (WEBGL_debug_renderer_info) reveals GPU details that create unique device fingerprints.
window-name-channel
✓ Passed
window.name persists across page navigations and can be used as a covert channel to pass data between origins or exfiltrate information.
meta-refresh-redirect
✓ Passed
Meta refresh tags can redirect users without JavaScript, potentially to malicious sites. They can bypass some redirect protections.
base-tag-hijacking
✓ Passed
The <base> tag changes the base URL for all relative links. An external base href can redirect form submissions and links to attacker-controlled servers.
iframe-srcdoc-content
✓ Passed
The srcdoc attribute embeds HTML directly in an iframe. If user-controlled, this can lead to XSS without loading an external URL.
performance-timing-leak
✓ Passed
The Resource Timing API can leak information about cross-origin resources, potentially revealing user state or cached resources.
credential-api-usage
✓ Passed
The Credential Management API can access stored credentials. Ensure it is used securely and only for legitimate authentication.
indexeddb-usage
✓ Passed
IndexedDB can store large amounts of data client-side. Ensure sensitive data is encrypted and properly managed.
js-bridge-exposure
✓ Passed
WebView JavaScript bridges (Android addJavascriptInterface, iOS messageHandlers) can be exploited if the page is loaded in a vulnerable webview or if XSS occurs.
intent-scheme-links
✓ Passed
Links using intent://, custom schemes, or deep links can be exploited to launch apps with malicious parameters or bypass security controls.
missing-viewport
✓ Passed
Pages without proper viewport configuration may allow zooming attacks or tapjacking. user-scalable=no can prevent accessibility but may be required for security.
touch-event-hijacking
✓ Passed
Scripts capturing touch events (touchstart, touchend, touchmove) on document or body level may be attempting tapjacking or UI redress attacks.
device-motion-abuse
✓ Passed
Access to device orientation and motion sensors can be used for fingerprinting, keystroke inference, or tracking user movements.
app-store-link-validation
✓ Passed
Links to app stores should be validated to ensure they point to legitimate apps. Attackers may redirect users to malicious apps.
file-protocol-access
✓ Passed
References to file:// URLs may indicate the page expects to run in a webview with file access enabled, which can lead to local file theft.
universal-link-misconfig
✓ Passed
Pages that handle deep linking should properly validate the source. Missing apple-app-site-association or assetlinks.json verification could allow link hijacking.
sensitive-input-webview
✗ 1 violation(s)
Password, credit card, and other sensitive inputs in pages loaded via webview could be intercepted by malicious apps through JavaScript injection.
mobile-clipboard-access
✓ Passed
Clipboard access on mobile devices can expose sensitive data like passwords, 2FA codes, or cryptocurrency addresses that users frequently copy.
screen-capture-detection
✓ Passed
Screen capture APIs (getDisplayMedia) can be used to record sensitive content displayed on the device.
webgl-fingerprinting
✓ Passed
WebGL can expose detailed GPU information (renderer, vendor, extensions) that creates a unique device fingerprint. This is commonly used for tracking.
webgl-context-usage
✓ Passed
Page creates WebGL or WebGL2 rendering contexts. While legitimate for 3D graphics, WebGL can be used for fingerprinting and may have security implications.
webgpu-usage
✓ Passed
WebGPU is a modern graphics API that provides lower-level GPU access than WebGL. It can expose detailed hardware information and may have security implications.
media-capture-usage
✓ Passed
Page requests access to camera, microphone, or screen capture. These are sensitive permissions that should only be requested when necessary.
web3-wallet-interaction
✓ Passed
Page interacts with cryptocurrency wallets (MetaMask, etc.). This can expose wallet addresses and may request transaction signing.
webxr-usage
✓ Passed
Page uses WebXR API for virtual or augmented reality. This can access device sensors, cameras, and spatial tracking data.
web-speech-usage
✓ Passed
Page uses speech recognition or synthesis. Speech recognition can capture audio and may send it to external servers for processing.
web-animation-abuse
✓ Passed
Page uses animations that could be used for UI deception, such as moving elements, fake loading indicators, or visual misdirection.
picture-in-picture-usage
✓ Passed
Page uses Picture-in-Picture API which creates a floating video window. This could potentially be abused for UI spoofing attacks.
file-system-access
✓ Passed
Page uses File System Access API which can read and write files on the local system. This is a powerful permission that should be used carefully.
web-midi-usage
✓ Passed
Page requests access to MIDI devices. This can reveal connected musical instruments and controllers, contributing to device fingerprinting.
gamepad-fingerprinting
✓ Passed
Page accesses connected gamepads. The specific controllers and their IDs can be used for device fingerprinting.
web-codecs-usage
✓ Passed
Page uses WebCodecs API for low-level video/audio encoding/decoding. This provides direct access to media codecs.
web-nfc-usage
✓ Passed
Page uses Web NFC API for near-field communication. NFC can read/write to contactless cards and tags.
compression-streams-usage
✓ Passed
Page uses Compression Streams API. While legitimate for reducing bandwidth, compression can also be used to efficiently exfiltrate data.
background-sync-usage
✓ Passed
Page uses Background Sync API which can queue network requests to be sent when connectivity is restored, even after the page is closed.
malformed-url-exploitation
✓ Passed
URLs with unusual patterns (backslashes, null bytes, excessive encoding, protocol confusion) may attempt to exploit parser differences or bypass security controls.
prototype-chain-manipulation
✓ Passed
Scripts that modify Object.prototype, Array.prototype, or use __proto__ may be attempting prototype pollution attacks that can lead to sandbox escape.
geolocation-abuse
✓ Passed
Geolocation API usage that may be excessive, automated, or combined with data exfiltration patterns.
blob-url-exploitation
✓ Passed
Blob URLs created from user input or external data can be used to bypass CSP, create downloadable malware, or execute code in isolated contexts.
web-worker-security
✓ Passed
Web Workers can execute code in isolated contexts, potentially bypassing main thread security controls. Workers from blob URLs or with postMessage can be exploited.
timing-attack-vectors
✓ Passed
High-resolution timing APIs and cross-origin timing measurements can leak sensitive information about other origins or enable Spectre-style attacks.
memory-exhaustion-attempts
✓ Passed
Code patterns that could rapidly allocate memory (infinite loops, recursive allocations, large arrays) may be attempting to crash the browser or cause DoS.
iframe-sandbox-escape
✓ Passed
Scripts attempting to access parent/top frames, break out of iframes, or detect sandbox restrictions may be attempting to escape security boundaries.
browser-api-abuse
✓ Passed
Unusual combinations of browser APIs (error handlers + eval, navigator probing + network requests) may indicate exploitation or advanced fingerprinting.
spectre-bypass-attempts
✓ Passed
Code using SharedArrayBuffer, high-resolution timers, and cache probing techniques may be attempting Spectre-style speculative execution attacks.
permission-prompt-abuse
✓ Passed
Scripts that rapidly request permissions, request multiple permissions simultaneously, or use social engineering patterns to obtain permissions.
aria-deception
✓ Passed
ARIA attributes that misrepresent element purpose, state, or content can deceive screen reader users into performing unintended actions.
role-abuse
✓ Passed
Elements with ARIA roles that contradict their actual behavior can confuse assistive technology users and potentially trick them into unintended actions.
live-region-abuse
✓ Passed
Aggressive aria-live regions (especially assertive) can interrupt screen reader users with urgent messages, potentially for phishing or scam purposes.
keyboard-trap
✓ Passed
Elements that capture keyboard focus without providing an escape mechanism can trap keyboard and screen reader users, potentially forcing them to reload or preventing access to content.
sr-only-injection
✓ Passed
Content visible only to screen readers (using sr-only/visually-hidden classes) that contains links, forms, or suspicious text could be used to phish AT users.
focus-stealing
✓ Passed
Scripts that repeatedly call focus() or blur() can disorient keyboard and screen reader users, potentially directing them to malicious elements.
accesskey-hijacking
✓ Passed
Accesskeys that conflict with browser shortcuts or use common keys could hijack keyboard commands, causing unintended actions.
alt-text-abuse
✓ Passed
Images with alt text that contains suspicious content, doesn't match the image context, or includes hidden instructions could mislead screen reader users.
skip-link-manipulation
✓ Passed
Skip links that point to unexpected content, external URLs, or are hidden could be used to redirect AT users to malicious content.
locale-injection
✓ Passed
URL parameters controlling language or locale can be exploited to inject invalid locales, trigger error conditions, or bypass security controls that differ by region.
text-direction-abuse
✓ Passed
Bidirectional text control characters or inconsistent dir attributes can be used to disguise malicious URLs, filenames, or content through visual spoofing.
i18n-homoglyph-attacks
✓ Passed
Unicode characters that look similar to ASCII characters (homoglyphs) can be used to create deceptive URLs, usernames, or content that appears legitimate but directs to malicious destinations.
svg-xss
✓ Passed
Detects SVG elements containing script tags or event handlers that could execute JavaScript
svg-foreign-object
✓ Passed
Detects SVG foreignObject elements which can embed arbitrary HTML content and potentially execute scripts
svg-embedded-content
✓ Passed
Detects SVG files loaded via object, embed, or iframe which have full script execution capabilities