fix(backend): use explicit DISABLE_RATE_LIMIT_FOR_TESTS flag instead of env-based bypass
Replace NODE_ENV/APP_ENV bypass with DISABLE_RATE_LIMIT_FOR_TESTS=true. Only test runners should set this. Prevents rate limiting bypass when APP_ENV=development is mistakenly used in production. Phase 1 audit - P1.6
This commit is contained in:
parent
35370330b5
commit
66ba082788
6 changed files with 12 additions and 28 deletions
|
|
@ -47,6 +47,9 @@ RABBITMQ_ENABLE=true
|
|||
JWT_SECRET=your-secret-key-here-change-in-production
|
||||
CORS_ALLOWED_ORIGINS=http://localhost:3000
|
||||
|
||||
# Rate limiting (P1.6): Use DISABLE_RATE_LIMIT_FOR_TESTS=true ONLY for automated test runners.
|
||||
# Never set in production. When set, bypasses rate limiting for E2E/integration tests.
|
||||
|
||||
# Services
|
||||
STREAM_SERVER_URL=http://localhost:8082
|
||||
CHAT_SERVER_URL=http://localhost:8081
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ CHAT_SERVER_URL=http://localhost:8081 # URL Chat Server
|
|||
# DEV/TEST UNIQUEMENT - Ne jamais utiliser en production
|
||||
# CSRF_DISABLED=true # Désactive CSRF (dev/test seulement)
|
||||
# BYPASS_CONTENT_CREATOR_ROLE=true # Bypass vérification rôle créateur (dev/test seulement)
|
||||
# DISABLE_RATE_LIMIT_FOR_TESTS=true # Désactive rate limiting (E2E/integration tests seulement)
|
||||
```
|
||||
|
||||
### Fichiers de Configuration
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ func ResetEnv() {
|
|||
"RATE_LIMIT_LIMIT",
|
||||
"RATE_LIMIT_WINDOW",
|
||||
"LOG_LEVEL",
|
||||
"DISABLE_RATE_LIMIT_FOR_TESTS",
|
||||
}
|
||||
for _, v := range testVars {
|
||||
os.Unsetenv(v)
|
||||
|
|
|
|||
|
|
@ -171,18 +171,8 @@ func (el *EndpointLimiter) createEndpointLimit(
|
|||
errorMessage string,
|
||||
) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
// Désactiver le rate limiting en mode test/e2e/development pour les tests E2E et développement.
|
||||
// Utiliser uniquement les variables d'environnement (jamais de headers contrôlables par le client).
|
||||
if os.Getenv("GO_ENV") == "test" ||
|
||||
os.Getenv("GO_ENV") == "e2e" ||
|
||||
os.Getenv("GO_ENV") == "development" ||
|
||||
os.Getenv("E2E_TEST") == "true" ||
|
||||
os.Getenv("NODE_ENV") == "test" ||
|
||||
os.Getenv("NODE_ENV") == "e2e" ||
|
||||
os.Getenv("NODE_ENV") == "development" ||
|
||||
os.Getenv("APP_ENV") == "test" ||
|
||||
os.Getenv("APP_ENV") == "e2e" ||
|
||||
os.Getenv("APP_ENV") == "development" {
|
||||
// P1.6: Use explicit DISABLE_RATE_LIMIT_FOR_TESTS flag instead of env-based bypass.
|
||||
if os.Getenv("DISABLE_RATE_LIMIT_FOR_TESTS") == "true" {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,14 +96,9 @@ func (rl *RateLimiter) RateLimitMiddleware() gin.HandlerFunc {
|
|||
return
|
||||
}
|
||||
|
||||
// Désactiver le rate limiting en mode test/e2e/development pour les tests E2E et développement.
|
||||
// Utiliser uniquement les variables d'environnement (jamais de headers contrôlables par le client).
|
||||
if os.Getenv("NODE_ENV") == "test" ||
|
||||
os.Getenv("NODE_ENV") == "e2e" ||
|
||||
os.Getenv("NODE_ENV") == "development" ||
|
||||
os.Getenv("APP_ENV") == "test" ||
|
||||
os.Getenv("APP_ENV") == "e2e" ||
|
||||
os.Getenv("APP_ENV") == "development" {
|
||||
// P1.6: Use explicit DISABLE_RATE_LIMIT_FOR_TESTS flag instead of env-based bypass.
|
||||
// Only test runners should set this. Never use in production.
|
||||
if os.Getenv("DISABLE_RATE_LIMIT_FOR_TESTS") == "true" {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,14 +75,8 @@ func (rl *SimpleRateLimiter) Middleware() gin.HandlerFunc {
|
|||
return
|
||||
}
|
||||
|
||||
// Désactiver le rate limiting en mode test/e2e/development pour les tests E2E et développement.
|
||||
// Utiliser uniquement les variables d'environnement (jamais de headers contrôlables par le client).
|
||||
if os.Getenv("NODE_ENV") == "test" ||
|
||||
os.Getenv("NODE_ENV") == "e2e" ||
|
||||
os.Getenv("NODE_ENV") == "development" ||
|
||||
os.Getenv("APP_ENV") == "test" ||
|
||||
os.Getenv("APP_ENV") == "e2e" ||
|
||||
os.Getenv("APP_ENV") == "development" {
|
||||
// P1.6: Use explicit DISABLE_RATE_LIMIT_FOR_TESTS flag instead of env-based bypass.
|
||||
if os.Getenv("DISABLE_RATE_LIMIT_FOR_TESTS") == "true" {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue