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

Безопасность в Node.JS Webserver

Итак, я нахожусь в середине изучения моего пути вокруг Node.JS, и до сих пор я люблю его. У меня есть несколько проектов уже на работе, которые, я думаю, я могу использовать nodejs.

Я беспокоюсь, однако, о безопасности. Если я напишу собственный веб-сервер с помощью Node.JS http module, могу ли я быть очень уязвим для атак? У Apache/IIS были годы (и годы и годы) профессиональных команд, создающих безопасность в своих веб-серверах, и тем не менее люди продолжают искать дыры. Возможно ли, что мой доморощенный веб-сервер будет гораздо более открытым для атаки?

На что я могу сосредоточиться, чтобы создать хороший уровень безопасности на моем веб-сервере? Есть ли хорошие статьи, которые охватывают тему?

4b9b3361

Ответ 1

Я согласен с anm и schaermu об использовании обратного прокси-сервера, так что ваше приложение напрямую не обращается к вашим посетителям, даже если это действительно имеет больше общего с безопасностью, чем безопасность.

Я хочу добавить, что вам также нужно подумать о безопасной установке самой Node и ее модулей. В частности, никогда установить npm с помощью этого метода:

curl http://npmjs.org/install.sh | sudo sh

Это в основном дает корневой оболочке все, что вы получаете из сети, используя небезопасный HTTP без какой-либо проверки вообще, даже не зная, с кем вы разговариваете. Это может привести к серьезному компромиссу всей вашей системы с использованием самых простых и широко известных методов, и если ваша система скомпрометирована, то не имеет значения, находится ли ваше приложение за обратным прокси-сервером, брандмауэром или чем-то еще. См. этот ответ для более полного объяснения.

Ответ 2

Причина, по которой годами и годами профессиональных команд, создающих безопасность в Apache/IIS, является то, что все они охватывают серверы. Они могут иметь все типы сервисов по умолчанию, запуская версию X программного обеспечения, которая должна быть исправлена ​​при обнаружении какой-либо дыры и т.д.

Одна из замечательных вещей, которые я нахожу в Node.JS, - это то, что вы скажете, что вы хотите запустить на уровне ОС для своего конкретного приложения. Нет среднего слоя, если вы этого не хотите. Все, о чем я должен беспокоиться, если я размещаю его на сервере, которым я управляю, это порты уровня ОС и код веб-приложения. Нет файлов конфигурации Apache, обновлений модулей и т.д.

Итак, когда дело доходит до безопасности в Node.JS беспокоится о том, чтобы очистить внешнюю информацию, прежде чем действовать на нее, проверить личность на потенциально опасных действиях и т.д. Будьте как можно более закрытыми. Используйте SFTP для передачи файлов на удаленный хостинг-сервер и просто для открытия веб-приложения необходимо открыть необходимые порты.

Ответ 4

Возможно, вы захотите использовать обратный прокси.