2014-10-22 3 views
0

Я планирую начать свой первый веб-сайт. Веб-сайт представляет собой небольшой веб-сайт HTML5 + CSS + JS с бэкэнд, работающим с узлом node.js, который обслуживает данные, хранящиеся на mongodb. Я хотел бы знать, какой из них является лучшим решением в отношении главным образом безопасности:Веб-сайт с node.js, решение архитектуры хостинга

  • Веб-хостинг (SSL и CloudFlare) + VPS, обслуживающий порт 3000 (с SSL, CloudFlare и Node.js с разумными данными; пользователей и проход и местный mongodb)

  • Все в том же VPS.

  • Любой другой подход, который вы можете дать.

Дело в том, что в первом подходе есть два элемента в архитектуре, поэтому, если кто-то хочет его взломать, я полагаю, что это сложнее. С другой стороны, во втором подходе, если VPS взломан, все взломали, и они могут получить доступ к паролям, базе данных mongodb. Я очень одержим безопасностью, так как это мой первый веб-сайт, и я не знаю, что мешает сделать для защиты моего VPS (node.js и mongodb).

Кроме того, я хотел бы знать с точки зрения эффективности, которая была бы наилучшим решением для представления 10 МБ веб-сайта с 1.000 посещений в день.

+1

Невозможно ответить на этот вопрос. Детали того, какой вариант более безопасен, имеют гораздо больше общего с реализацией, чем тот из этих двух вариантов, которые вы используете. Один из ваших двух вариантов не в большей степени безопасен, чем другой. – jfriend00

ответ

2

Независимо от того, сколько фактических серверов вы решите развернуть, я бы настоятельно предложил не обслуживать ваш сайт непосредственно из node.js. Вместо этого прокси-сервер через более надежный http-сервер, такой как Apache или Nginx или даже lighttpd. По той простой причине, что http-модуль в node.js никогда не предназначался для защиты от червей, попыток взлома и различных других вредоносных программ.

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

Из моего личного опыта я оцениваю, что от 5% до 10% моей пропускной способности потребляется неудачными попытками взлома/заражения. То есть, когда я не подвергаюсь активной атаке.

Безопасность через неясность не является хорошей защитой. Тем более, что http-модуль узла не очень-то неясен в первую очередь, и кто-то обязан найти на данный момент хакерскую слабость.

Помимо защиты, вы также тратите меньше процессорных циклов, игнорируя эти попытки взлома в Apache или Nginx по сравнению с узлом.js, так как вам не нужно запускать какой-либо код javascript для их обработки.

+0

Можете ли вы предложить какие-либо ссылки на уязвимость node.js для червей/взломов? – jfriend00

+0

с использованием apache, например, вместо http-узла node.js, достаточно ли этого для защиты от упомянутых вами атак или каких-либо других действий для защиты сервера? – Egidi

+1

@Aitor: Поддержка CGI узла не очень зрелая, поэтому вы действительно не хотите использовать Apache без использования http-модуля узла. Кроме того, другие языки, такие как Java, Python, Ruby и Perl, реализовали свои собственные легкие http-модули, чтобы ускорить обслуживание веб-приложений под Apache. У узла уже есть это с 1-го дня. Итак, вы хотите использовать Apache в качестве обратного прокси (mod_rewrite) для вашего приложения-узла и настроить ваш брандмауэр так, чтобы только Apache был открыт снаружи. – slebetman

1

Вы можете сделать выбор между двумя архитектурами спорными. Обе архитектуры взломаны, и ваши данные будут раскрыты.

Если безопасность имеет первостепенное значение, проверить Mylar - это платформа, которая защищает конфиденциальность данных, даже если злоумышленник получает полный доступ к серверам. Mylar хранит только зашифрованные данные на сервере и расшифровывает данные только в браузерах пользователей.

Он работает на вершине Meteor, который, в свою очередь, работает поверх Node.js и использует MongoDB, поэтому, если ваше веб-приложение малое, должно быть легко переносить код. Meteor также хранит пароли, используя bcrpyt, лучший алгоритм хеширования пароля .

+0

Это не отвечает на вопрос. Вопрос в том, какой из двух вариантов более безопасен. Это полностью ортогональная рекомендация другой архитектуры приложения. – jfriend00

+2

@ jfriend00: иногда вам приходится читать между строк и распознавать проблемы [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –

+0

Я просто немного странно понимаю, что ничего не знаю об их приложении, вы переходите на рекомендации конкретной системы безопасности. Вы даже не знаете, что именно они пытаются защитить. В принципе, это очень плохой вопрос, который слишком широк, чтобы принимать что-либо помимо диких догадок (это и есть ваш ответ). Я голосовал, чтобы закрыть вопрос как слишком широкий. – jfriend00

Смежные вопросы