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