Загрузка…
Загрузка…
Node.js · middle · сложность 5
Риски безопасности CORS:
Чрезмерно разрешительное происхождение:
// DANGEROUS: Allows any origin
app.use(cors({
origin: '*',
credentials: true
}));
// VULNERABLE: Dynamic origin without validation
app.use(cors({
origin: (origin, callback) => {
callback(null, true); // Accepts any origin
},
credentials: true
}));Конкретные проблемы безопасности:
Правильная конфигурация CORS:
// Secure CORS configuration
const allowedOrigins = [
'
'
'
];
app.use(cors({
origin: function(origin, callback) {
// Allow requests with no origin (mobile apps, Postman)
if (!origin) return callback(null, true);
if (allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
credentials: true, // Only if needed
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
exposedHeaders: ['X-Total-Count'],
maxAge: 86400 // Cache preflight for 24 hours
}));
// Environment-specific configuration
const corsOptions = {
origin: process.env.NODE_ENV === 'production'
? ['
: [' '
credentials: process.env.NODE_ENV === 'production'
};Сценарии атак:
evil.com
делать запросы к
api.myapp.com
old.myapp.com
с подстановочным знаком CORS
Стратегии защиты:
credentials: true
кроме случаев крайней необходимости
Мониторинг и обнаружение:
Ключевой вывод для интервью: каковы последствия для безопасности неправильной настройки CORS в серверном приложении?