Безопасность в Node.JS Webserver - PullRequest
32 голосов
/ 10 марта 2011

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

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

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

Ответы [ 4 ]

9 голосов
/ 13 сентября 2011

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

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

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

8 голосов
/ 10 марта 2011

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

Хочу добавить, что вам также нужно подумать о безопасной установке самого узла и его модулей. В частности, никогда установите npm, используя этот метод:

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

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

5 голосов
/ 10 марта 2011

Попробуйте использовать Nginx в качестве веб-сервера для улучшения стабильности и безопасности.Проверьте в Google некоторые ресурсы по этой теме.

3 голосов
/ 10 марта 2011

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

...