Skip to content

Add Comprehensive API Input Validation and Sanitization #211

@llinsss

Description

@llinsss

Description:

Problem

Inconsistent input validation across endpoints creates security vulnerabilities and poor error messages. Need standardized validation layer.

Proposed Solution

Implement comprehensive validation:

  • Joi schemas for all request bodies
  • Centralized validation middleware
  • Detailed validation error messages
  • Type coercion and sanitization
  • Request size limits per endpoint

Technical Requirements

  • Create Joi schemas for all endpoints
  • Validation middleware with custom error formatting
  • Sanitize inputs (trim, lowercase where appropriate)
  • Validate nested objects and arrays
  • Custom validators for blockchain addresses, tags, etc.

Example

const transferSchema = Joi.object({
  recipient: Joi.string().pattern(/^@[a-z0-9_]{3,20}$/).required(),
  amount: Joi.number().positive().precision(18).required(),
  chain: Joi.string().valid('starknet', 'base', 'flow', 'lisk', 'u2u').required(),
  token: Joi.string().required()
});

Files to Modify/Create

New Files:

  • backend/middleware/validateRequest.js - Centralized validation middleware
  • backend/validators/customValidators.js - Custom Joi validators
  • backend/validators/blockchainValidators.js - Address/tag validators
  • backend/tests/validation.enhanced.test.js - Enhanced validation tests
  • docs/VALIDATION_GUIDE.md - Validation documentation

Modify:

  • backend/schemas/transaction.js - Enhance with detailed validation
  • backend/schemas/wallet.js - Enhance with detailed validation
  • backend/schemas/payment.js - Enhance with detailed validation
  • backend/schemas/user.js - Enhance with detailed validation
  • backend/schemas/kyc.js - Enhance with detailed validation
  • backend/schemas/auth.js - Enhance with detailed validation
  • backend/schemas/balance.js - Enhance with detailed validation
  • backend/schemas/dispute.js - Enhance with detailed validation
  • backend/schemas/export.js - Enhance with detailed validation
  • backend/schemas/scheduledPayment.js - Enhance with detailed validation
  • backend/routes/transactions.js - Apply validation middleware
  • backend/routes/wallets.js - Apply validation middleware
  • backend/routes/auth.js - Apply validation middleware
  • backend/routes/users.js - Apply validation middleware
  • backend/middleware/validation.js - Enhance existing validation
  • backend/utils/response.js - Add validation error formatter

Acceptance Criteria

  • All endpoints have Joi validation schemas
  • Validation errors return 400 with details
  • Custom validators for domain-specific types
  • Input sanitization applied automatically
  • Validation schemas documented
  • Test coverage for validation logic

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions