Hardcoded secrets
id: security.hardcoded-secrets🔗
严重免费
扫描的语言:All
发现什么
API keys, tokens, passwords, connection strings in source
为什么重要
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
怎么做
Move this value to an environment variable and reference it via process.env.
Missing authentication
id: security.auth-missing-endpoints🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Route handler lacks authentication middleware, leaving endpoints unprotected.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Apply authentication middleware to this route handler. Use requireAuth, passport, JWT verification, or session-based auth.
SQL injection surface
id: security.sql-injection-surface🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaSQL
发现什么
Raw string concatenation in SQL queries
为什么重要
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
怎么做
Use parameterised queries or an ORM instead of string interpolation. Never concatenate user input into SQL strings.
OS command injection surface
id: security.os-command-injection🔗
严重免费
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects OS command execution with potentially unsafe arguments
为什么重要
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
怎么做
Avoid shell execution with interpolated strings. Use parameterised APIs (e.g. execFile with args array, subprocess.run with list args).
Dynamic file inclusion
id: security.file-inclusion🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects include/require with user-controlled or dynamic paths
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Avoid dynamic include/require paths from user input. Use an allow-list of permitted files and resolve paths against a trusted base directory.
Unsafe deserialization
id: security.unsafe-deserialization🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects deserialization of untrusted data with pickle, yaml.load, or marshal
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Never deserialize untrusted data. Use yaml.safe_load, JSON, or signed formats. Avoid pickle and marshal on external input.
Hardcoded passwords
id: security.hardcoded-passwords🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects password values assigned directly in source code
为什么重要
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
怎么做
Store passwords in environment variables or a secrets manager. Never commit credentials to source code.
id: security.html-css-comments-secrets🔗
严重Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Hardcoded secrets inside HTML or CSS comments and commented JSON/config snippets
为什么重要
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
怎么做
Remove secrets from comments and sample config blocks. Move credentials to runtime environment variables or a secure secret manager.
Committed .env file
id: security.committed-env🔗
高免费
扫描的语言:All
发现什么
A .env file is tracked by Git, exposing configuration and potential secrets in version history.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Add .env to .gitignore. If the file is already tracked, use git rm --cached to untrack it without deleting, or rotate any exposed secrets.
Overly permissive CORS
id: security.cors-too-permissive🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJava
发现什么
CORS configuration uses a wildcard origin, allowing requests from any domain.
为什么重要
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
怎么做
Restrict Access-Control-Allow-Origin to your specific frontend domains rather than using a wildcard.
Sensitive data in logs
id: security.sensitive-data-in-logs🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Logging statements may leak sensitive data such as credentials or PII.
为什么重要
Improper logging and monitoring configurations can expose sensitive debugging details to attackers or fail to provide alert visibility during active service outages.
怎么做
Redact sensitive fields before logging. Use a logging library with automatic PII scrubbing or log only non-sensitive summary data.
XSS surface
id: security.xss-surface🔗
高免费
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects XSS-prone APIs such as innerHTML and document.write()
为什么重要
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
怎么做
Use textContent, React children, or a sanitization library like DOMPurify instead of innerHTML or document.write().
Shell arbitrary evaluation
id: security.shell-arbitrary-evaluation🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Shell eval or source command uses an unquoted dynamic argument.
为什么重要
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
怎么做
Avoid eval and source for dynamic input. If a shell command is required, validate against an allow-list and pass quoted, fixed arguments.
Unescaped shell path deletion
id: security.shell-unescaped-path-deletion🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
rm command uses an unquoted variable path that may expand unexpectedly.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Quote shell path variables and validate them before deletion. Prefer rm -rf -- "$TARGET_DIR" after checking the path is non-empty and under an expected base directory.
Open redirect
id: security.open-redirect🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects redirects that may use user-controlled URLs
为什么重要
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
怎么做
Validate redirect targets against an allow-list of trusted domains. Never pass raw user input into Location headers.
Unsafe file upload
id: security.unsafe-file-upload🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects file uploads that use user-controlled destination paths
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Validate file type and extension server-side, generate random filenames, and store uploads outside the web root.
HTML inline unsafe script
id: security.html-inline-unsafe-script🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Inline HTML scripts and event handlers should not perform unsafe DOM writes or execute dynamic code
为什么重要
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
怎么做
Replace unsafe inline DOM writes and dynamic code with safe DOM APIs, escaped text nodes, and validated event handling.
Weak key/token entropy
id: security.weak-key-entropy🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects low-entropy random generation (under 16 bytes / 128 bits) used for keys, tokens, or identifiers
为什么重要
Low-entropy keys or tokens can be predicted or brute-forced by attackers, leading to bypass of authentication or cryptographic controls (CWE-326).
怎么做
Use at least randomBytes(16) (128 bits) for keys, tokens, and identifiers. For license keys, prefer randomBytes(16) or crypto.getRandomValues() with 16+ bytes.
Insecure API URL default
id: security.insecure-api-url-default🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects HTTP (non-HTTPS) default URLs for API endpoints in configuration code
为什么重要
Using cleartext HTTP defaults for API endpoints exposes communication to man-in-the-middle (MITM) attacks, potentially leaking sensitive data or allowing traffic interception (CWE-319).
怎么做
Default all API URLs to HTTPS. Override via environment variable if needed for local development, but never default to cleartext HTTP for production endpoints.
Command injection via tainted data
id: security.taint-command-injection🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to a command execution sink without sanitisation.
为什么重要
Command injection lets attackers execute arbitrary operating-system commands on your server. This can lead to full server compromise, data exfiltration, or ransomware deployment (CWE-78).
怎么做
Avoid shell execution with interpolated strings. Use parameterised APIs (e.g. execFile with args array).
Path traversal via tainted data
id: security.taint-path-traversal🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to a filesystem sink without path validation.
为什么重要
Path traversal allows attackers to read or write files outside the intended directory, potentially exposing source code, configuration files, or secrets (CWE-22).
怎么做
Resolve paths against a trusted base directory, reject parent-segment sequences, and avoid passing raw user strings into fs APIs.
XXE-vulnerable XML parsing
id: security.xxe-surface🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
XML parser invoked with external entity expansion enabled (e.g. libxml noent: true), enabling XXE attacks.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Disable external entity expansion in the XML parser. Use a library that is XXE-safe by default.
Permissive grants
id: security.permissive-grants🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Granting extensive privileges (like GRANT ALL) to public or anonymous roles is insecure.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Restrict privileges by granting only necessary permissions (e.g. SELECT, INSERT) to specific, authorized roles rather than PUBLIC or anonymous roles.
Missing or weak row-level security
id: security.sql-rls-static🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
PostgreSQL tables containing private tenant data must enable and enforce Row-Level Security (RLS).
为什么重要
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
怎么做
Enable Row-Level Security via ALTER TABLE ... ENABLE ROW LEVEL SECURITY and FORCE ROW LEVEL SECURITY, and define restrictive policies with user boundary checks.
Security definer function search path
id: security.sql-security-definer-search-path🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Functions defined as SECURITY DEFINER execute with privileges of the owner and must lock the search_path to prevent hijacking.
为什么重要
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
怎么做
Add an explicit "SET search_path = public" or trusted schema when creating SECURITY DEFINER functions to lock execution context.
Missing RLS on sensitive tables (Pro)
id: security.sql-missing-rls🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
PostgreSQL tables containing private tenant data must enable and enforce Row-Level Security (RLS).
为什么重要
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
怎么做
Define a policy with CREATE POLICY ... ON ... USING (...) to restrict data access to authorized users.
JWT allows algorithm "none"
id: security.jwt-alg-none🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
JWT verification does not restrict algorithms, allowing forged unsigned tokens via the "none" algorithm
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Always pass an explicit algorithms allowlist to jwt.verify() (e.g. { algorithms: ["HS256"] }). Never accept "none" as a valid algorithm.
Refresh token in localStorage
id: security.refresh-token-in-localstorage🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Refresh tokens or long-lived credentials stored in localStorage are vulnerable to theft via XSS
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Store refresh tokens in httpOnly, Secure, SameSite=Strict cookies — not localStorage or sessionStorage. XSS cannot read httpOnly cookies.
Path traversal surface
id: security.path-traversal🔗
高免费
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
File path constructed by concatenating user input, enabling directory traversal attacks.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Resolve and validate file paths against a base directory. Reject paths containing ../ or absolute paths from user input.
Unsafe innerHTML assignment
id: security.unsafe-innerhtml🔗
高免费
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Assignment to innerHTML can lead to XSS if user input is included.
为什么重要
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
怎么做
Use textContent or sanitize HTML before assigning to innerHTML. Use a library like DOMPurify.
Untrusted deserialization
id: security.untrusted-deserialization🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Deserialization of user-controlled data without validation, enabling code execution attacks.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Validate and sanitise deserialized data. Prefer safe parsers with type schemas. Avoid pickle.loads on untrusted input.
XML external entity parsing
id: security.xxe-parsing🔗
高Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
XML parser called without disabling external entity expansion, enabling XXE attacks.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Disable external entity expansion in the XML parser. Use a library that is XXE-safe by default.
Dangerous eval usage
id: security.dangerous-eval🔗
高免费
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects dangerous dynamic code execution such as eval(), exec(), and new Function()
为什么重要
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
怎么做
Avoid eval(), exec(), and new Function(). Use safer alternatives like JSON.parse for data parsing, or refactor to eliminate dynamic code execution.
HTML missing CSP
id: security.html-missing-csp🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Full HTML pages should include a robust Content Security Policy or receive one from static-host headers
为什么重要
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
怎么做
Add a strong Content Security Policy via the HTML head or static-host headers. Avoid unsafe wildcards and inline execution where possible.
id: security.html-static-host-headers🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Static site host config should supply route-wide security headers for browser pages
为什么重要
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
怎么做
Configure route-wide security headers in the static host config, including CSP, Referrer-Policy, X-Content-Type-Options, frame protection, and Permissions-Policy.
HTML referrer leak
id: security.html-referrer-leak🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
target="_blank" anchors or forms without rel protection can leak the referrer and enable tabnabbing
为什么重要
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
怎么做
Add rel="noopener noreferrer" to target="_blank" anchors and forms. Avoid opening untrusted destinations in a new tab without rel protection.
CSS insecure import
id: security.css-insecure-import🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
External CSS imports or URL loads over HTTP can leak content and enable network interception
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Load CSS and fonts over HTTPS only. Remove cleartext HTTP imports and URL loads from stylesheets.
HTML mixed content
id: security.html-mixed-content🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Page resources or embedded styles load over unencrypted HTTP instead of HTTPS
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Upgrade all embedded resource URLs to HTTPS. Avoid loading page assets or embedded styles over cleartext HTTP.
HTML external asset integrity
id: security.html-external-asset-integrity🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Third-party scripts and stylesheets should include subresource integrity and compatible crossorigin attributes
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Add integrity and crossorigin to third-party scripts and stylesheets, or self-host the asset.
id: security.html-insecure-form-action🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Forms submitting over cleartext or scheme-relative URLs can leak user input and bypass transport security
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Submit forms over HTTPS or to a same-origin relative endpoint. Avoid cleartext HTTP and scheme-relative action URLs for sensitive submissions.
HTML iframe sandbox
id: security.html-iframe-sandbox🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
External iframes should use restrictive sandboxing to limit script and origin access
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Add a restrictive sandbox attribute to third-party iframes. Avoid combining allow-scripts and allow-same-origin unless the content is fully trusted.
HTML unsafe embed
id: security.html-unsafe-embed🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
External object and embed elements should not load active plugin content without tight type restrictions
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Prefer sandboxed iframes or self-hosted assets. Avoid loading third-party plugin content with object or embed, and restrict MIME types to safe passive content where possible.
id: security.html-meta-redirect🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Short-delay meta refresh redirects can be used for phishing, open redirects, or policy bypasses
为什么重要
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
怎么做
Replace meta refresh redirects with server-side redirects or validated client navigation. Avoid short-delay refreshes that point to external URLs or internal paths.
HTML base tag hijack
id: security.html-base-tag-hijack🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
External or mispositioned base tags can rewrite relative URLs and alter page navigation
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Remove external base tags or place a same-origin base URL inside <head>. Avoid base target="_blank" on untrusted pages.
HTML import map integrity
id: security.html-import-map-integrity🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Import maps should not redirect module specifiers to external origins without trust controls
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Keep import map entries on same-origin or relative URLs. Avoid mapping module specifiers to external CDNs unless you can trust and verify the source.
CSS data exfiltration
id: security.css-data-exfiltration🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Attribute selectors combined with external HTTP URLs can exfiltrate sensitive values from forms
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Remove attribute-selector rules that fetch external URLs. Keep sensitive form value matching and URL loads out of untrusted CSS.
CSS external font integrity
id: security.css-external-font-integrity🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
External CDN fonts loaded from @font-face can be supply-chain risks when self-hosting is not used
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Self-host font files or use a trusted local font source. Avoid loading fonts from public CDNs in production stylesheets.
Insecure random number generator
id: security.insecure-random🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects use of non-cryptographic random in security-sensitive contexts
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use a cryptographically secure random generator (e.g. crypto.getRandomValues() in JS, secrets module in Python, SecureRandom in Java, crypto/rand in Go).
Dynamic SQL column names
id: security.dynamic-sql-columns🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects template literal or string interpolation used to build SQL column names, which can allow injection if values come from user input
为什么重要
Interpolating dynamic column names in SQL queries bypasses parameterized query protection, introducing SQL injection risks where attackers can manipulate database structures (CWE-89).
怎么做
Use a whitelist mapping from input keys to allowed column names. Never interpolate user-supplied strings into SQL column positions.
Weak email validation regex
id: security.weak-email-validation🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects overly permissive email validation regexes that accept invalid or unsafe inputs
为什么重要
Overly permissive email validation patterns allow malformed, spoofed, or malicious inputs to bypass business rules, leading to account validation issues or data corruption (CWE-20).
怎么做
Use a stricter regex pattern (e.g. RFC 5322 subset) or a dedicated email validation library (e.g. Zod .email(), validator.js isEmail). At minimum, require a domain with a TLD of 2+ characters.
Structured idempotency key
id: security.idempotency-key-leak🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects idempotency keys containing structured identifiers (subscription IDs, license IDs) that leak business data to external providers
为什么重要
Embedding structured internal identifiers in idempotency keys leaks business-sensitive data (such as subscription or license IDs) to payment providers or third-party log systems (CWE-200).
怎么做
Generate idempotency keys using randomUUID() or an HMAC derived from the operation key. Never embed subscription IDs, license IDs, or other business identifiers that external providers could log.
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to an XSS sink without sanitisation.
为什么重要
An attacker who can control data sent to an XSS sink can inject malicious scripts that execute in victims' browsers. This can lead to session hijacking, credential theft, or defacement.
怎么做
Sanitise user input before rendering. Use encodeURIComponent for URLs, or a library like DOMPurify for HTML.
SQL injection via tainted data
id: security.taint-sql-injection🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to a SQL query sink without parameterisation.
为什么重要
SQL injection allows attackers to read, modify, or delete database records. It is consistently one of the most common and damaging web vulnerabilities (CWE-89).
怎么做
Use parameterised queries or an ORM. Never concatenate user input into SQL strings.
Open redirect via tainted data
id: security.taint-open-redirect🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to a redirect sink without URL validation.
为什么重要
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
怎么做
Validate redirect targets against an allow-list of trusted domains. Never pass raw user input into redirect helpers or Location headers.
Prototype pollution via tainted data
id: security.taint-prototype-pollution🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to an object merge or assignment sink without sanitisation.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Validate and block __proto__, constructor, and prototype keys before merging objects. Use Object.create(null) for dictionaries.
Code execution via tainted data
id: security.taint-code-execution🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
User-controlled data flows to a dynamic code execution sink without sanitisation.
为什么重要
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
怎么做
Avoid eval(), exec(), and new Function() with user input. Use safer alternatives like JSON.parse for data parsing.
Missing CSRF protection
id: security.missing-csrf-protection🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
State-changing route handler without visible CSRF token verification.
为什么重要
Cross-Site Request Forgery (CSRF) allows malicious sites to perform actions on behalf of authenticated users without their consent, potentially leading to unauthorized state modifications.
怎么做
Add CSRF token verification to all state-changing endpoints. Use a CSRF middleware for your framework.
Weak session identifier
id: security.weak-session-id🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Session identifier derived from user-controlled or predictable input.
为什么重要
Weak session identifiers or insecure cookies can be intercepted or predicted by attackers, leading to session hijacking and unauthorized account access.
怎么做
Generate session identifiers server-side with a cryptographically secure random source. Never accept client-supplied session IDs.
Rails mass assignment
id: security.rails-mass-assignment🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Active Record model created or updated with raw params hash, bypassing strong parameters.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use strong parameters with params.require(:model).permit(:attr1, :attr2) to whitelist allowed attributes.
Rails insecure session config
id: security.rails-insecure-session-config🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Session cookie is missing secure flags (secure, httponly, same_site).
为什么重要
Weak session identifiers or insecure cookies can be intercepted or predicted by attackers, leading to session hijacking and unauthorized account access.
怎么做
Set secure: true, httponly: true, and same_site: :strict on session cookies in config/initializers/session_store.rb.
Unhedged unsafe blocks
id: security.rust-unsafe-blocks🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Usage of unsafe blocks without a preceding safety documentation comment.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Document every unsafe block with a preceding "// SAFETY: <explanation>" comment explaining why the invariants are satisfied.
id: security.missing-security-headers🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Application does not set HTTP security response headers (HSTS, X-Content-Type-Options, X-Frame-Options, Permissions-Policy)
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Add helmet() (Node.js) or equivalent security-header middleware. At minimum set Strict-Transport-Security, X-Content-Type-Options: nosniff, X-Frame-Options, and Permissions-Policy.
Unpinned GitHub Actions
id: security.gh-actions-unpinned🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
GitHub Actions workflow steps reference third-party actions by mutable tag rather than a full commit SHA
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Pin every third-party action to a full 40-character commit SHA, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683. Use a tool like Renovate or pin-github-action to automate this.
GraphQL introspection in production
id: security.graphql-introspection-prod🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
GraphQL server exposes introspection without disabling it for production environments
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Disable GraphQL introspection in production: set introspection: process.env.NODE_ENV !== "production" in Apollo Server, or use a validationRules plugin that blocks introspection queries.
GraphQL missing depth limit
id: security.graphql-no-depth-limit🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
GraphQL server has no query depth or complexity limiting, enabling denial-of-service via deeply nested queries
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Add query depth limiting with graphql-depth-limit or complexity analysis with graphql-query-complexity. Wire the validation rule into ApolloServer validationRules or the equivalent for your framework.
JWT issued without expiry
id: security.jwt-no-expiry🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
JWT tokens are signed without an expiry claim (exp / expiresIn), making them valid indefinitely
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Set a short expiry on all issued JWTs using expiresIn (jsonwebtoken), .setExpirationTime() (jose), or an "exp" claim in the payload (PyJWT). Use refresh tokens to extend sessions.
Broken cryptographic algorithm
id: security.broken-crypto-algorithm🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Use of a deprecated or broken encryption algorithm such as DES or RC4.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use AES-256-GCM or ChaCha20-Poly1305. Never use DES, RC4, or ECB mode.
HTTP method override
id: security.http-method-override🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
methodOverride middleware enabled, allowing clients to override HTTP methods via query parameters or headers.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Disable methodOverride or restrict it to trusted clients. Prefer standard HTTP methods.
HTTP URL without TLS
id: security.http-no-tls🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Hardcoded HTTP URL that should use HTTPS for transport security.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use HTTPS URLs. Configure HSTS and redirect HTTP to HTTPS at the server level.
Weak encryption mode
id: security.weak-encryption-mode🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Use of a raw cipher initialisation that may lack authentication (AEAD).
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use authenticated encryption (AES-256-GCM, ChaCha20-Poly1305). Avoid raw CBC/CTR without a MAC.
Weak hash algorithm
id: security.weak-hash-algorithm🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Use of a cryptographically weak hash function such as MD5 or SHA1.
为什么重要
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
怎么做
Use SHA-256 or stronger. For password hashing use bcrypt, scrypt, or Argon2.
Unsafe document.write usage
id: security.no-document-write🔗
中Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
Detects the use of document.write which can lead to XSS vulnerabilities
为什么重要
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
怎么做
Avoid document.write(). Use DOM APIs like appendChild(), innerHTML with sanitization, or a templating system instead.
HTML javascript URI
id: security.html-javascript-uri🔗
低Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
javascript: URLs execute code directly from HTML attributes and can enable XSS-style execution
为什么重要
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
怎么做
Replace javascript: URLs with normal links or buttons and event handlers. Avoid direct script execution in HTML attributes.
Excessive GitHub Actions permissions
id: security.gh-actions-excessive-permissions🔗
低Pro
扫描的语言:JSTSTSXPythonGoPHPRubyJavaRustBash
发现什么
GitHub Actions workflow grants overly broad or undeclared default permissions
为什么重要
即将推出 - 我们正在为每项检查撰写详细说明。
怎么做
Add a top-level "permissions: {}" block and grant only the minimum scopes needed per job, e.g. "permissions: { contents: read }".