Подтвердить что ты не робот

Насколько надежным является nodejs как http-сервер?

Если я использую http-модуль nodejs для создания простого http-сервера, сколько валидации/проверки нужно делать?

Поддерживает ли модуль проблемы безопасности, такие как неверные запросы и запросы со злонамеренными значениями заголовка? Обеспечивает ли модуль, что все следует за спецификацией http, или мне нужно сделать много проверок, чтобы убедиться, что мой сервер не просто сбой?

Изменить: пусть говорят, что nodejs не выполняет никакой реальной проверки, что я вполне уверен в этом. Что мне нужно сделать, чтобы убедиться, что мой сервер не легко сработает?

4b9b3361

Ответ 1

Что такое вредоносное значение заголовка? Node - низкий уровень, поэтому многие вещи не проверяются. Но вы должны смотреть на эти вещи. Но это не значит, что кто-то может отправить "выполнить 0xFA894224" или что-то в этом роде. Единственные отверстия, которые, вероятно, имеют такие вещи, как разрешение искаженного запроса (например, возможно, вы можете получить request.location: "\*\*\* CHINAAA \*\*\*", забыв запустить событие закрытия сокета или выбросив ошибку JavaScript и изящно завершая.

Вы всегда можете проверить себя на эти вещи или использовать блок catch try, process.on и т.д. Конечно, это не означает, что не может быть переполнение буфера или что-то где-то, но маловероятно, учитывая Node построен поверх v8, а многие библиотеки - это чистый JavaScript

Изменить: Как остановить случайные сбои:

process.on('uncaughtException',function() {
 /* ignore error */
});

Ответ 2

NodeJS не был использован для использования в качестве HTTP-сервера, ориентированного на мир. Однако возможности HTTP можно использовать для запросов прокси на соответствующий веб-сервер.

Вне темы, но Nginx действительно хорош в этом, так как он содержит устойчивое количество потоков.