{"id":381243,"date":"2026-10-12T06:26:18","date_gmt":"2026-10-12T06:26:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ach-security-headers-audit\/"},"modified":"2026-10-12T07:06:53","modified_gmt":"2026-10-12T07:06:53","slug":"aiutocomputerhelp-http-header-audit","status":"publish","type":"plugin","link":"https:\/\/pl.wordpress.org\/plugins\/aiutocomputerhelp-http-header-audit\/","author":23573578,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.1","stable_tag":"0.3.1","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"AiutoComputerHelp HTTP Header Audit","header_author":"aiutocomputerhelp","header_description":"Read-only audit of HTTP security headers returned by the current WordPress site.","assets_banners_color":"9acad5","last_updated":"2026-10-12 07:06:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.aiutocomputerhelp.it\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.1":{"tag":"0.3.1","author":"aiutocomputerhelp","date":"2026-10-12 07:06:53","revision":3740669}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3740660,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3740660,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3740660,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3740660,"resolution":"772x250","location":"assets","locale":"","width":773,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3740660,"resolution":"1","location":"assets","locale":"","width":1053,"height":1130},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3740660,"resolution":"2","location":"assets","locale":"","width":1073,"height":1118}},"screenshots":{"1":"Audit screen before running the HTTP header analysis.","2":"Example audit results showing detected HTTP security headers, priorities, observed values, and assessments."}},"plugin_section":[],"plugin_tags":[19966,2846,34310,947,600],"plugin_category":[54],"plugin_contributors":[283971],"plugin_business_model":[],"class_list":["post-381243","plugin","type-plugin","status-publish","hentry","plugin_tags-csp","plugin_tags-headers","plugin_tags-hsts","plugin_tags-http","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-aiutocomputerhelp","plugin_committers-aiutocomputerhelp"],"banners":{"banner":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/banner-772x250.png?rev=3740660","banner_2x":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/banner-1544x500.png?rev=3740660","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/icon-128x128.png?rev=3740660","icon_2x":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/icon-256x256.png?rev=3740660","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/screenshot-1.png?rev=3740660","caption":"Audit screen before running the HTTP header analysis."},{"src":"https:\/\/ps.w.org\/aiutocomputerhelp-http-header-audit\/assets\/screenshot-2.png?rev=3740660","caption":"Example audit results showing detected HTTP security headers, priorities, observed values, and assessments."}],"raw_content":"<!--section=description-->\n<p>AiutoComputerHelp HTTP Header Audit checks HTTP response headers returned by the current WordPress site and highlights security controls that deserve review.<\/p>\n\n<p>The plugin is intentionally read-only. It does not modify WordPress, .htaccess, Apache, Nginx, CDN, reverse proxy, browser policies, or server configuration.<\/p>\n\n<p>Version 0.3.1 keeps the validated 0.3-series audit behavior unchanged and updates the plugin name, slug, and translation domain for WordPress.org review. The existing checks cover: HTTPS, HTTP-to-HTTPS redirection, redirect-chain integrity, HSTS, Content-Security-Policy, CSP Report-Only, clickjacking protection, X-Content-Type-Options, Content-Type and charset, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP, cross-origin isolation prerequisites, basic CORS exposure, Cache-Control, cookie attributes, information disclosure headers, selected obsolete security headers, and obvious conflicting singleton policies.<\/p>\n\n<p>CSP analysis looks beyond presence or absence. It reviews high-signal conditions such as unsafe-eval, unsafe-inline without a nonce or hash, wildcard script sources, object-src, base-uri, and frame-ancestors.<\/p>\n\n<p>The audit uses four result states: Pass, Review, Warning, and Info. A missing header is not automatically a vulnerability, and a present header does not prove that a site is secure. Some policies are application-specific deployment choices. The plugin intentionally does not calculate a numeric security score.<\/p>\n\n<p>For safety, the audit accepts only URLs on the current WordPress site's host and follows redirects only while they remain on that host.<\/p>\n\n<p>Cookie auditing checks objective Set-Cookie attribute relationships and prefix requirements without exposing cookie values. The absence of Secure, HttpOnly, or SameSite is not automatically treated as a vulnerability because the correct choice depends on the cookie's purpose.<\/p>\n\n<p>Active origin-reflection probing, preflight simulation, deep CORS authorization testing, Clear-Site-Data, scheduled monitoring, and configuration suggestions remain outside the scope of this plugin. Basic CORS analysis validates response-header syntax and a few objective incompatibilities without assuming that public wildcard access or a specific allowed origin is inherently unsafe.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install the ZIP from the WordPress Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open Tools &gt; AiutoComputerHelp HTTP Header Audit.<\/li>\n<li>Run the audit against the site's public URL or another URL on the same host.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20change%20my%20security%20headers%3F\"><h3>Does this plugin change my security headers?<\/h3><\/dt>\n<dd><p>No. The plugin is read-only.<\/p><\/dd>\n<dt id=\"is%20a%20warning%20or%20review%20result%20proof%20that%20my%20site%20is%20vulnerable%3F\"><h3>Is a Warning or Review result proof that my site is vulnerable?<\/h3><\/dt>\n<dd><p>No. The report identifies configurations that deserve review. Security headers are only one layer of web security, and several policies are application-specific.<\/p><\/dd>\n<dt id=\"why%20is%20missing%20hsts%20shown%20as%20review%20instead%20of%20an%20automatic%20failure%3F\"><h3>Why is missing HSTS shown as Review instead of an automatic failure?<\/h3><\/dt>\n<dd><p>HSTS provides valuable downgrade protection, but enabling it is a deployment decision with compatibility implications. The plugin reports the absence and evaluates the policy when present without assuming that every site must use the same deployment strategy.<\/p><\/dd>\n<dt id=\"does%20a%20present%20csp%20automatically%20pass%3F\"><h3>Does a present CSP automatically pass?<\/h3><\/dt>\n<dd><p>No. The plugin also checks several high-signal CSP weaknesses and missing hardening directives. CSP is complex, so this remains an audit aid rather than a formal CSP validator.<\/p><\/dd>\n<dt id=\"can%20i%20scan%20another%20website%3F\"><h3>Can I scan another website?<\/h3><\/dt>\n<dd><p>No. The target is deliberately restricted to the current WordPress site's host to reduce SSRF risk and keep the plugin focused on self-auditing.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20an%20external%20service%3F\"><h3>Does the plugin send data to an external service?<\/h3><\/dt>\n<dd><p>No. The scan is performed by the WordPress server against its own site URL. No analytics or external API is used.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Rename the plugin to AiutoComputerHelp HTTP Header Audit and align the requested WordPress.org slug and text domain.<\/li>\n<li>Keep the validated read-only same-host audit behavior unchanged.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>First stable release of the validated 0.3 series.<\/li>\n<li>Preserve the read-only same-host request boundary and the validated header, cookie, cross-origin, CORS, and redirect-chain audit behavior.<\/li>\n<li>Finalize WordPress.org release metadata and the translation template without changing audit classifications or request behavior.<\/li>\n<\/ul>\n\n<h4>0.3.0-beta1<\/h4>\n\n<ul>\n<li>Promote the validated 0.3.0-alpha6 baseline to beta without changing audit classifications or request behavior.<\/li>\n<li>Keep the read-only same-host request boundary and all validated header, cookie, cross-origin, CORS, and redirect-chain checks unchanged.<\/li>\n<li>Synchronize plugin, readme, and translation-template version metadata for beta testing.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha6<\/h4>\n\n<ul>\n<li>Preserve all alpha5 redirect classifications and request-boundary behavior.<\/li>\n<li>Guarantee a non-empty assessment for every Redirect-chain Integrity result, including completed chains with four or more redirects.<\/li>\n<li>Add regression coverage that verifies redirect assessments are always populated.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha5<\/h4>\n\n<ul>\n<li>Add Redirect-chain Integrity without changing the existing header, cookie, cross-origin policy, or CORS classifications.<\/li>\n<li>Detect HTTPS-to-HTTP downgrade redirects, loops, unsupported redirect schemes, missing Location targets, and excessive redirect chains.<\/li>\n<li>Review cross-host redirect targets without following them, preserving the plugin's same-site SSRF boundary.<\/li>\n<li>Keep direct responses informational and short, coherent same-host chains as Pass.<\/li>\n<li>Increase only the hard redirect trace ceiling for pathological same-site chains so long-chain diagnostics can be reported safely.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha4<\/h4>\n\n<ul>\n<li>Add a conservative Basic CORS Exposure check without altering the existing alpha3 controls.<\/li>\n<li>Validate Access-Control-Allow-Origin as a single origin, *, or null and review the special null origin case.<\/li>\n<li>Validate the case-sensitive Access-Control-Allow-Credentials: true value and flag wildcard-origin plus credentials as incompatible for credentialed CORS.<\/li>\n<li>Validate Access-Control-Allow-Methods and Access-Control-Allow-Headers token lists and review wildcard use with credentials.<\/li>\n<li>Report Vary: Origin context for explicit origins without treating its absence as an automatic error for fixed single-origin policies.<\/li>\n<li>Keep valid public wildcard CORS informational because public non-credentialed resources may intentionally use it.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha3<\/h4>\n\n<ul>\n<li>Add read-only checks for Cross-Origin-Opener-Policy (COOP), Cross-Origin-Embedder-Policy (COEP), and Cross-Origin-Resource-Policy (CORP).<\/li>\n<li>Recognize current COOP tokens including noopener-allow-popups.<\/li>\n<li>Validate COEP require-corp, credentialless, unsafe-none, and an optional report-to parameter.<\/li>\n<li>Add a conservative cross-origin isolation summary based on COOP, COEP, and Permissions-Policy cross-origin-isolated.<\/li>\n<li>Keep missing cross-origin policies informational because these controls are application-specific and can affect popup or cross-origin resource behavior.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha2<\/h4>\n\n<ul>\n<li>Refine cookie prefix diagnostics: distinguish a missing Secure attribute from a non-HTTPS origin.<\/li>\n<li>Treat localhost, 127.0.0.1, and ::1 as local development contexts for the origin-scheme diagnostic only. Secure remains mandatory for __Secure-, __Host-, __Http-, and __Host-Http- style prefixes.<\/li>\n<\/ul>\n\n<h4>0.3.0-alpha1<\/h4>\n\n<ul>\n<li>Add a read-only Cookie Security Audit without changing the 0.2.3 header-analysis logic.<\/li>\n<li>Never expose cookie values in the report; only cookie names and selected attributes are shown.<\/li>\n<li>Warn on SameSite=None without Secure and Partitioned without Secure.<\/li>\n<li>Validate __Secure-, __Host-, __Http-, and __Host-Http- prefix requirements conservatively.<\/li>\n<li>Review repeated security-relevant cookie attributes.<\/li>\n<li>Keep generic absence of Secure, HttpOnly, or SameSite informational because cookie purpose is application-specific.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Validate Cache-Control directive syntax and standard directive values instead of treating header presence alone as sufficient.<\/li>\n<li>Warn on malformed standard directives such as non-numeric max-age and s-maxage values.<\/li>\n<li>Review extension-only policies and request-oriented directives observed in responses without treating unknown extensions as invalid syntax.<\/li>\n<li>Preserve conservative context-dependent handling for otherwise valid cache policies.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Validate Permissions-Policy directive and allowlist syntax instead of treating header presence alone as a pass.<\/li>\n<li>Recognize empty, self, quoted-origin, and wildcard allowlists conservatively.<\/li>\n<li>Warn when no valid directive is present, review mixed valid\/malformed directives, and review wildcard policies.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Validate Referrer-Policy values instead of treating header presence alone as a pass.<\/li>\n<li>Recognize all standard Referrer-Policy tokens and comma-separated fallback lists.<\/li>\n<li>Evaluate the last recognized policy token as the effective policy.<\/li>\n<li>Warn when no recognized policy is present and review mixed recognized\/unrecognized policy lists.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added Pass, Review, Warning, and Info result states.<\/li>\n<li>Added priority labels without introducing a numeric security score.<\/li>\n<li>Added HTTP-to-HTTPS redirect checking.<\/li>\n<li>Added Content-Type and charset review.<\/li>\n<li>Added conservative Cache-Control analysis.<\/li>\n<li>Expanded CSP analysis for script sources, unsafe-eval, unsafe-inline, wildcards, object-src, base-uri, and Report-Only.<\/li>\n<li>Improved HSTS analysis, including staged max-age handling and preload prerequisite review.<\/li>\n<li>Added legacy header checks for X-XSS-Protection, HPKP, and Expect-CT.<\/li>\n<li>Added information disclosure review for Server and X-Powered-By.<\/li>\n<li>Added basic consistency checks for selected singleton security policies.<\/li>\n<li>Deferred COOP, CORP, COEP, detailed CORS, and cookie auditing to later versions.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial experimental release.<\/li>\n<li>Read-only same-site HTTP security header audit.<\/li>\n<\/ul>","raw_excerpt":"Read-only audit of HTTP security headers and related same-site HTTPS behavior returned by your WordPress site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/381243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=381243"}],"author":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aiutocomputerhelp"}],"wp:attachment":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=381243"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=381243"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=381243"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=381243"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=381243"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=381243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}