Skip to main content
ESLint Interlace
Plugin: nestjs-security

Overview

NestJS security rules for guards, validation pipes, throttling, and more

Live from GitHub

This content is fetched directly from README.md on GitHub and cached for 1 hour.

AI-Optimized Security

Every rule includes CWE, OWASP, and CVSS metadata for AI assistants to provide precise, context-aware fixes.


Live README from GitHubfrom eslint-plugin-nestjs-security/README.md, cached for 1 hour.Edit on GitHub
ESLint Interlace Logo

Security rules tailored for NestJS applications (Controllers, Providers, Decorators).

NPM VersionNPM DownloadsPackage LicenseCodecovSince Dec 2025

โญ If this plugin caught a real bug for you, star the repo โ€” it's the signal that keeps these rules maintained.

Description

This plugin provides Security rules tailored for NestJS applications (Controllers, Providers, Decorators).

Philosophy

Interlace fosters strength through integration. Instead of stacking isolated rules, we interlace security directly into your workflow to create a resilient fabric of code. We believe tools should guide rather than gatekeep, providing educational feedback that strengthens the developer with every interaction.

Getting Started

npm install eslint-plugin-nestjs-security --save-dev

โš™๏ธ Configuration Presets

PresetDescription
recommendedEnables all security rules with sensible severity levels
strictAll security rules set to 'error' for maximum protection

๐Ÿ“š Supported Libraries

LibrarynpmDownloadsDetection
@nestjs/commonnpmdownloadsDecorators, Guards
@nestjs/corenpmdownloadsApp Config
class-validatornpmdownloadsDTO Validation
@nestjs/throttlernpmdownloadsRate Limiting

โš ๏ธ Global Configuration Handling

Static Analysis Limitation: ESLint analyzes files independently. It cannot detect cross-file configurations like app.useGlobalGuards() in main.ts while linting users.controller.ts.

Understanding the Problem

NestJS supports two security configuration approaches:

ApproachExampleESLint Can See?
Per-Controller@UseGuards(AuthGuard) on classโœ…
Per-Method@UseGuards(AuthGuard) on methodโœ…
Global (main.ts)app.useGlobalGuards(new AuthGuard())โŒ
Global (Module)ThrottlerModule.forRoot({ ttl: 60, limit: 10 })โŒ

Solution: assumeGlobal* Options

For teams using global configuration, set assumeGlobal*: true to disable per-file checks:

// eslint.config.js
import nestjsSecurity from 'eslint-plugin-nestjs-security';

export default [
  {
    ...nestjsSecurity.configs.recommended,
    rules: {
      // Tell ESLint: "We have app.useGlobalGuards() in main.ts"
      'nestjs-security/require-guards': ['warn', { assumeGlobalGuards: true }],

      // Tell ESLint: "We have app.useGlobalPipes(new ValidationPipe()) in main.ts"
      'nestjs-security/no-missing-validation-pipe': [
        'warn',
        { assumeGlobalPipes: true },
      ],

      // Tell ESLint: "We have ThrottlerModule.forRoot() in app.module.ts"
      'nestjs-security/require-throttler': [
        'warn',
        { assumeGlobalThrottler: true },
      ],
    },
  },
];

Alternative: Use Skip Decorators

The rules recognize common "bypass" decorators for intentionally unprotected endpoints:

// These bypass require-guards
@Public()        // nestjs-passport pattern
@SkipAuth()      // common custom decorator
@AllowAnonymous() // alternative naming
@NoAuth()        // alternative naming

// These bypass require-throttler
@SkipThrottle()  // @nestjs/throttler built-in

๐Ÿ”ฎ Future: Cross-File Global Detection (Planned)

We're planning dedicated rules to verify global configuration exists:

  • require-global-guards โ†’ Ensures main.ts contains app.useGlobalGuards()
  • require-global-validation-pipe โ†’ Ensures main.ts contains app.useGlobalPipes()
  • require-global-throttler โ†’ Ensures app.module.ts imports ThrottlerModule

This will enable a "trust but verify" approach for teams using global configuration.


๐Ÿ“ฆ Compatibility

PackageVersion
ESLint^8.0.0 || ^9.0.0 || ^10.0.0
Node.js>=18.0.0

See the ESLint Version Support Policy โ€” current ecosystem share data, the 20% gate, and the forward-looking exception that covers v10.

Rules

Legend

IconDescription
๐Ÿ’ผRecommended: Included in the recommended preset.
โš ๏ธWarns: Set to warn in recommended preset.
๐Ÿ”งAuto-fixable: Automatically fixable by the --fix CLI option.
๐Ÿ’กSuggestions: Providing code suggestions in IDE.
๐ŸšซDeprecated: This rule is deprecated.
๐ŸŸขType-unaware: AST-only, runs in oxlint JS-plugin tier.
๐ŸŸกType-aware (refining): pure-AST primary path; types refine precision.
๐ŸŸ Type-aware (graceful): requires TS program; silent without it.
RuleCWEOWASPCVSSDescription๐Ÿง ๐Ÿ’ผโš ๏ธ๐Ÿ”ง๐Ÿ’ก๐Ÿšซ
no-exposed-debug-endpointsCWE-489Identifies potential debug, administration, or testing endpoints that are often left exposed in productionโ€ฆ๐ŸŸข
no-exposed-private-fieldsCWE-200A01:2021This rule detects sensitive fields (like passwords, tokens, secrets) in entity or DTO classes that are notโ€ฆ๐ŸŸข
no-missing-validation-pipeCWE-20A03:2021The rule provides LLM-optimized error messages (Compact 2-line format) with actionable security guidance:๐ŸŸข
require-class-validatorCWE-20A03:2021The rule provides LLM-optimized error messages (Compact 2-line format) with actionable security guidance:๐ŸŸข
require-guardsCWE-284A01:2021The rule provides LLM-optimized error messages (Compact 2-line format) with actionable security guidance:๐ŸŸข๐Ÿ’ผ
require-throttlerCWE-770A05:2021This rule detects NestJS controllers and route handlers that lack rate limiting, which can make the applicaโ€ฆ๐ŸŸข

Part of the Interlace ESLint Ecosystem โ€” AI-native security plugins with LLM-optimized error messages:

PluginDownloadsDescription
eslint-plugin-secure-codingdownloadsGeneral security rules & OWASP guidelines.
eslint-plugin-pgdownloadsPostgreSQL security & best practices.
eslint-plugin-node-securitydownloadsNode.js core-module security (fs, child_process, vm, crypto, Buffer).
eslint-plugin-jwtdownloadsJWT security & best practices.
eslint-plugin-browser-securitydownloadsBrowser-specific security & XSS prevention.
eslint-plugin-express-securitydownloadsExpress.js security hardening rules.
eslint-plugin-lambda-securitydownloadsAWS Lambda security best practices.
eslint-plugin-nestjs-securitydownloadsNestJS security rules & patterns.
eslint-plugin-mongodb-securitydownloadsMongoDB security best practices.
eslint-plugin-vercel-ai-securitydownloadsVercel AI SDK security hardening.
eslint-plugin-import-nextdownloadsNext-gen import sorting & architecture.

โญ Support & follow

If this plugin caught a real bug for you, star the repo โ€” stars are the signal that keeps the Interlace ESLint ecosystem maintained โ€” and follow the writeups on Dev.to for the benchmarks and security research behind these rules.

GitHub stars

๐Ÿ“„ License

MIT ยฉ Ofri Peretz

ESLint Interlace Plugin

View README.md on GitHub โ†’

On this page

No Headings