Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 3.3 KB

requestpayloadsizelimit.russian.md

File metadata and controls

60 lines (40 loc) · 3.3 KB

Ограничивайте размер полезной нагрузки с помощью обратного прокси или промежуточного ПО

Объяснение в один абзац

Разбор тел запросов, например JSON-кодированных полезных нагрузок, является операцией с высокой производительностью, особенно с большими запросами. При обработке входящих запросов в вашем веб-приложении вы должны ограничить размер их соответствующих полезных нагрузок. Поступающие запросы с неограниченными размерами тела/полезной нагрузки могут привести к плохой работе приложения или к его сбоям из-за сбоя в отказе в обслуживании или других нежелательных побочных эффектов. Многие популярные middleware-решения для синтаксического анализа тел запросов, такие как уже включенный пакет body-parser для express, предоставляют опции для ограничения размеров полезных нагрузок запросов, облегчая разработчикам реализацию этой функциональности. Вы также можете интегрировать ограничение размера тела запроса в программное обеспечение обратного прокси-сервера/веб-сервера, если оно поддерживается. Ниже приведены примеры ограничения размеров запросов с использованием express и/или nginx.

Пример кода для express

const express = require('express');

const app = express();

app.use(express.json({ limit: '300kb' })); // body-parser defaults to a body size limit of 100kb

// Request with json body
app.post('/json', (req, res) => {

    // Check if request payload content-type matches json, because body-parser does not check for content types
    if (!req.is('json')) {
        return res.sendStatus(415); // -> Unsupported media type if request doesn't have JSON body
    }

    res.send('Hooray, it worked!');
});

app.listen(3000, () => console.log('Example app listening on port 3000!'));

🔗 Express docs for express.json()

Пример конфигурации для nginx

http {
    ...
    # Limit the body size for ALL incoming requests to 1 MB
    client_max_body_size 1m;
}

server {
    ...
    # Limit the body size for incoming requests to this specific server block to 1 MB
    client_max_body_size 1m;
}

location /upload {
    ...
    # Limit the body size for incoming requests to this route to 1 MB
    client_max_body_size 1m;
}

🔗 Nginx docs for client_max_body_size