Our development team has been considering using Node.js for a new enterprise application that requires high-level security. The users include federal police, so there's a high chance that we'll eventually be audited for security.

  • Given that Node.js is relatively new, does it still have security issues that need to be addressed?
  • Does anyone have any development experience with Node.js and any insight into potential attacks using its structure?

I appreciate the help.

Edit: some users on StackOverflow have suggested using a reverse proxy, but I'm curious if anyone has more suggestions.

link|improve this question

80% accept rate
feedback

2 Answers

up vote 2 down vote accepted

Although I can't point to any specific reported defects, I'd be nervous about the node.js architecture - where your code runs as part of the webserver code. While with something like mod_php, there is still only a single process handling both the HTTP and logic tiers, there is a clear functional separation between the 2, and the interface between the webserver and the logic tier has been expressly designed and tested to accomodate failures - particulary in the logic tier.

Also, there are a lot of tools available for webservers (Apache in particular) which facilitate management and (used properly) enhance security.

Another major consideration is availability of skills/support/training - regardless of its quality / utility, node.js has a lot of catching up to do compared with other web development platforms.

Our development team has been considering using Node.js

That you are specifically trying to deliver what should be a very secure application on a platform which (judging from your statement above) you are not thoroughly familiar with seems to be very reckless. Most security vulnerabilities in web applications arise not because of faults in the development environment but in faults in the bespoke code added on top.

Certainly using a reverse proxy would facilitate getting standard HTTP logging, anomoly detection and reduce impact of protocol level attacks.

One of the best tools for building secure web applications is mod_security - AFAIK, this is only available to run within Apache - but it would offer the possibility (along with mod_proxy) of deploying a front-end system providing the usual webserver functionality (logging, static content) along with, say, authentication services, and using node.js as a backend.

link|improve this answer
This is very helpful and I appreciate the insight. I agree it is reckless; however, we anticipate many analytic and unique concurrent operations so I didn't want to immediately disregard the option. – DeLongey Jun 29 '11 at 22:28
feedback

Ideally, the entire application should be restricted either by an intranet or a VPN, or at the very least IP address of the client, especially if it is going to be used by any sort of Federal officer. If the attacker can't even hit the web server, then they certainly won't be able to exploit Node.js, right?

link|improve this answer
Correct, the production service will be deployed via an intranet and VPN for remote or field apps. However, if a laptop or tablet were to be stolen from a vehicle my concern is that the system can be compromised anyways. Ideas? – DeLongey Jun 29 '11 at 0:56
Hmm... I would just say to take the usual precautions: full disk encryption, securid for the vpn, etc. If you're really scared you can use Group Policy to disable caching by IE on the client... – BenGC Jun 29 '11 at 1:39
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.