Comprehensive Express.js security middleware library that automatically sets multiple HTTP response headers to protect web applications against common security vulnerabilities.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
HTTPS enforcement and referrer policy configuration for secure communication and privacy protection.
Enforces HTTPS connections by instructing browsers to only connect via HTTPS for a specified period.
/**
* Sets Strict-Transport-Security header to enforce HTTPS
* @param options - HSTS configuration options
* @returns Express middleware function
*/
function strictTransportSecurity(
options?: StrictTransportSecurityOptions
): MiddlewareFunction;
interface StrictTransportSecurityOptions {
/** Duration in seconds for HSTS policy (default: 31536000 - 1 year) */
maxAge?: number;
/** Apply policy to all subdomains (default: true) */
includeSubDomains?: boolean;
/** Eligible for browser preload lists (default: false) */
preload?: boolean;
}Usage Examples:
import { strictTransportSecurity } from "helmet";
// Default: 1 year, include subdomains
app.use(strictTransportSecurity());
// Custom configuration
app.use(strictTransportSecurity({
maxAge: 63072000, // 2 years
includeSubDomains: true,
preload: true
}));
// Short duration for testing
app.use(strictTransportSecurity({
maxAge: 300, // 5 minutes
includeSubDomains: false
}));Configuration Details:
maxAge: Duration in seconds that browsers should remember to only access via HTTPS
includeSubDomains: Whether to apply HSTS policy to all subdomains
true: Protects subdomains but requires all to support HTTPSfalse: Only applies to the exact domainpreload: Whether the domain is eligible for browser preload lists
maxAge >= 31536000 and includeSubDomains: trueControls how much referrer information is sent with requests.
/**
* Sets Referrer-Policy header to control referrer information
* @param options - Referrer policy configuration options
* @returns Express middleware function
*/
function referrerPolicy(
options?: ReferrerPolicyOptions
): MiddlewareFunction;
interface ReferrerPolicyOptions {
/** Policy or array of policies (default: ["no-referrer"]) */
policy?: ReferrerPolicyToken | ReferrerPolicyToken[];
}
type ReferrerPolicyToken =
| "no-referrer"
| "no-referrer-when-downgrade"
| "same-origin"
| "origin"
| "strict-origin"
| "origin-when-cross-origin"
| "strict-origin-when-cross-origin"
| "unsafe-url"
| "";Usage Examples:
import { referrerPolicy } from "helmet";
// Default: no-referrer
app.use(referrerPolicy());
// Single policy
app.use(referrerPolicy({
policy: "strict-origin-when-cross-origin"
}));
// Multiple policies (fallback support)
app.use(referrerPolicy({
policy: ["strict-origin-when-cross-origin", "origin-when-cross-origin"]
}));
// No referrer for privacy
app.use(referrerPolicy({
policy: "no-referrer"
}));Policy Values:
HSTS Deployment Strategy:
// Phase 1: Testing (short duration)
app.use(strictTransportSecurity({
maxAge: 300, // 5 minutes
includeSubDomains: false
}));
// Phase 2: Staging (medium duration)
app.use(strictTransportSecurity({
maxAge: 86400, // 1 day
includeSubDomains: true
}));
// Phase 3: Production (long duration)
app.use(strictTransportSecurity({
maxAge: 31536000, // 1 year
includeSubDomains: true,
preload: true
}));High Privacy (least referrer info):
app.use(referrerPolicy({ policy: "no-referrer" }));Balanced (good privacy, maintains some functionality):
app.use(referrerPolicy({ policy: "strict-origin-when-cross-origin" }));Legacy Compatibility (moderate privacy):
app.use(referrerPolicy({ policy: "origin-when-cross-origin" }));app.use(strictTransportSecurity({
maxAge: 63072000, // 2 years
includeSubDomains: true,
preload: true
}));
app.use(referrerPolicy({
policy: "strict-origin-when-cross-origin"
}));app.use(strictTransportSecurity({
maxAge: 31536000, // 1 year
includeSubDomains: true
}));
app.use(referrerPolicy({
policy: "origin-when-cross-origin"
}));app.use(strictTransportSecurity({
maxAge: 3600, // 1 hour
includeSubDomains: false
}));
app.use(referrerPolicy({
policy: "same-origin"
}));