Weak Server-Side Controls
Weak Server-Side Controls
Mobile applications often rely heavily on server-side APIs, but weak server controls can compromise the entire system. Many developers mistakenly believe that because mobile app code is compiled, server-side validation is unnecessary.
Common Server-Side Vulnerabilities:
- Lack of input validation allowing injection attacks
- Missing authentication on API endpoints
- Insufficient rate limiting enabling brute force attacks
- Weak session management
- Exposed administrative functionality
- Information disclosure through verbose error messages
Impact of Weak Controls: Attackers can bypass client-side restrictions by directly calling APIs, potentially accessing unauthorized data, manipulating application logic, or overwhelming servers with requests. This is particularly dangerous as mobile apps cannot hide their API endpoints from determined attackers.
Secure Implementation:
// Node.js - Secure API endpoint with validation and rate limiting
const express = require('express');
const rateLimit = require('express-rate-limit');
const validator = require('validator');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limit each IP to 100 requests per windowMs
});
app.post('/api/user/update', limiter, authenticateToken, (req, res) => {
// Input validation
const { email, name } = req.body;
if (!validator.isEmail(email)) {
return res.status(400).json({ error: 'Invalid email format' });
}
if (!validator.isAlphanumeric(name) || name.length > 50) {
return res.status(400).json({ error: 'Invalid name format' });
}
// Process validated input
updateUser(req.user.id, email, name);
});