include::../description.adoc[] include::../ask-yourself.adoc[] include::../recommended.adoc[] == Sensitive Code Example In Express.js application the code is sensitive if the https://www.npmjs.com/package/helmet-csp[helmet-csp] or https://www.npmjs.com/package/helmet[helmet] middleware is used without the ``++frameAncestors++`` directive (or if ``++frameAncestors++`` is set to ``++'none'++``): ---- const express = require('express'); const helmet = require('helmet'); let app = express(); app.use( helmet.contentSecurityPolicy({ directives: { // other directives frameAncestors: ["'none'"] // Sensitive: frameAncestors is set to none } }) ); ---- == Compliant Solution In Express.js application a standard way to implement CSP frame-ancestors directive is the https://www.npmjs.com/package/helmet-csp[helmet-csp] or https://www.npmjs.com/package/helmet[helmet] middleware: [source,javascript] ---- const express = require('express'); const helmet = require('helmet'); let app = express(); app.use( helmet.contentSecurityPolicy({ directives: { // other directives frameAncestors: ["'example.com'"] // Compliant } }) ); ---- include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] endif::env-github,rspecator-view[]