Требования к backend
Хочу перечислить все ошибки и требования, с которыми я или другие знакомые разработчики сталкивались при прохождении тестпула:
1. Если на фронте есть ограничение по вводимым данным или размерам изображений, то и со стороны backend должны быть ровно такие же проверки (пользователь может перехватить запрос к api и отправить любые данные). 2. Вы должны делать все возможные проверки для того, чтобы исключить код 5хх. Код 5хх это ошибка сервера, а у нашей лучшей api не должно быть ошибок! 3. Тщательно прорабатывайте все контроллеры и промежуточное ПО, каждая недоработка может стать серьезной уязвимостью. 4. Флуд контроль очень важен, тем более, к примеру, при загрузке данных на сервер. Я лично сталкивался с тем, что пользователь может отправить 100 одинаковых фото к вам на сервис. Для устранения подобных ситуаций стоит делать Флуд контроль на большой промежуток времени (пример: 10 запросов в час) или сделать свой алгоритм определения флуда. К примеру, считывание md5 фото и сравнение его с другими md5 фото. Если они одинаковые, то давать предупреждение пользователю и прекращать загрузку. 5. Нужно проверять медиаданные на лишние байты. К примеру imagemagick имеет серьёзные уязвимости, которые позволяют в изображение внедрять код, создающий уязвимость в вашем сервисе. Я использую Sharp.js для обработки медиаданных от пользователя и попытки отправить битые и прочие файлы проходят неуспешно. 6. Исключения могут появляться и вне вашего кода. Тогда Fastify, на котором мы пишем api, будет отправлять в ответ всё тот же 5xx. Для того, чтобы к этому не придрались, используйте переназначение ошибки:
fastify.setErrorHandler(function (error, request, reply) {
return fastify.response.All(418, { message: "418 you a teapot" }, reply);
})
Last updated
Was this helpful?