Node.js Проблемы безопасности Express Framework
Я ищу модули, которые следует добавить в приложение Node/Express, в котором рассматриваются общие проблемы безопасности, перечисленные ниже:
- Уязвимости от инъекций (JavaScript, SQL, Mongo, HTML)
- Фиксация и захват сеанса
- Уязвимости между сайтами (сценарии, запрос на подделку)
- Массовое присвоение
- Вставьте здесь соответствующую озабоченность.
Спасибо за вашу помощь!
----------
Некоторые ресурсы, которые я нашел:
Отличный разговор (11/2012): http://lanyrd.com/2012/asfws/sxzbm/ (см. слайды)
Вопрос ServerFault (2011-2012): https://serverfault.com/info/285123/is-node-js-mature-for-enterprise-security
Сообщение в блоге по теме (9/2012): http://codefol.io/posts/29-Why-Rails-and-not-Sinatra-or-Node-js-
Exploit tester: https://code.google.com/p/skipfish/
Паспортный модуль: https://github.com/jaredhanson/passport
Модуль EveryAuth: https://github.com/bnoguchi/everyauth
Ответы
Ответ 1
Я написал сообщение в блоге, которое дает отличную отправную точку в Написание приложений Secure Express.js. Он охватывает несколько других вещей, помимо csrf и шлема, как упоминалось zeMirco.
Другое дело, что вы не можете сравнить express.js с рельсами. Это яблоки и апельсины. Например, нет ORM, который поставляется вместе с Express, что реализация или использование стороннего модуля зависит от вас.
Я попытаюсь дать вам разбивку каждой из ваших проблем.
-Injection Vulnerabilities (JavaScript, SQL, Mongo, HTML)
Опять же, это вещи, не встроенные в выражение. Ближайшей вещью будет XSS заботиться об инъекции в шаблоны. Шаблоны Jade или EJS, которые обычно используются с экспресс-кодированием, > "и по умолчанию, но помните, что есть другие контексты, такие как ввод пользователя в JavaScript или CSS, о которых вам нужно будет беспокоиться.
-Session fixation and hijacking
Снова см. сообщение в блоге выше, но Express основан на использовании connect, и один из них является промежуточным программным обеспечением сеанса. Самое главное здесь - правильно установить флаги файлов cookie.
-Cross-Site Vulnerabilities (Scripting, Request Forgery)
См. выше. Он также поставляется с промежуточным программным обеспечением express.csrf(). В упомянутом блоге показано, как его реализовать.
-Mass Assignment
Не проблема с express.js, поскольку у нее нет понятий, в которых этот тип уязвимости применим, однако настраиваемая логика, которую вы пишете, может быть на самом деле уязвима для этой проблемы, так что опять-таки проблема проверки того, уязвим или если вы используете сторонний модуль,...
Ответ 2
Два модуля, о которых я могу сразу подумать:
- csrf: промежуточное ПО для защиты CRSF.
- helmet: промежуточное программное обеспечение, реализующее различные заголовки безопасности
Ответ 3
Одна вещь, о которой нужно опасаться, - это BodyParser. См. http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
Ответ 4
Вы должны знать, что если вы укажете обработчик ошибок catch-all, вы не должны перезапускать сервер или делать что-либо блокирование в этом обработчике в ответ на ошибки USER (диапазон 4xx
), поскольку это может привести к DOS уязвимость. Эта уязвимость автоматически адресуется в express-error-handler
, и служба будет отключена, как только это будет возможно (когда активные соединения будут разряжены или произойдет тайм-аут), поэтому перезапуск не должен иметь большого значения. Реализация этого поведения сильно изменила мои тесты эксплойтов.
BTW, НЕ безопасно просто игнорировать все необработанные ошибки. Это оставит ваше приложение в состоянии undefined, что просто представляет собой уязвимость DOS другого типа.