Avoid using a hard-coded secret

Metadata

ID: javascript-express/hardcoded-secret

Language: JavaScript

Severity: Warning

Category: Security

Description

Do not store secrets in plaintext where they are used. Instead use environment variables (process.env.<NAME>) or better yet, use a key management service (KMS) linked below that includes encryption.

Learn More

Non-Compliant Code Examples

import session from "express-session"
import { expressjwt } from "express-jwt"

app.use(
  session({
    name: "session-name",
    secret: "not-secret-secret",
    secret: `${isProd ? "prod-secret" : "dev-secret"}`,
  })
)

app.use(
  expressjwt({
    name: "session-name",
    secret: "not-secret-secret",
    secret: `${isProd ? "prod-secret" : "dev-secret"}`,
  })
)

Compliant Code Examples

import session from "express-session"
import { expressjwt } from "express-jwt"

app.use(
  session({
    name: "session-name",
    secret: process.env.SECRET
  })
)

app.use(
  expressjwt({
    name: "session-name",
    secret: process.env.SECRET
  })
)