I currently have a desktop app written in Java (Swing) which talks to a C-based backend over SSL. I am trying to understand the pros/con from a security perspective to move to a web service model. There are multiple business and engineering reasons to do it but our business data is very sensitive, so security trumps the other reasons.

I hear about Java security patches every other week it seems but hear similar things with web browser/server exploits. For the web services model we would plan to use node.js running in a docker to isolate it. It would be talking to redis and/or postgresql only.

closed as too broad by Eric G, Xander, schroeder, Jens Erat, Mark Mar 25 '15 at 2:29

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


I am going to answer your question with a barrage of other questions.

Well does your app actually need to hit the open internet ? or can it simply exist on a company intranet?

The majority of 'java exploits' are simply ways that java's sandbox can get broken out of and of little consequence to legitimate java applications since it is really a apples and oranges comparison.

The majority of 'browser exploits' are of a similar vein (gaining access to a system or other data in the browser, by breaking out of the browsers sandbox. ) Chrome helps a little bit in this though.

That being said the majority of 'web server' exploits are based around being able to execute your own code or extract data that you are not supposed to.

If you have a java app talking directly to a C back-end via sockets how locked down is your C app? The potential for damage can be quite high ( since depending on your software you have the potential for rop chain exploits or even direct code execution, as well as having your entire processes memory becoming available.)

This would require a more sophisticated attacker.

On the other hand if you have a COTS web-server then you run the risk of having a less skilled attacker be able to run around your systems. And all re-writes are doomed to make the same mistakes that the original code made, (even if the original programmer is still around. )

I would personally stay away from node.js simply because it is such a immature technology compared to other options.

What is the potential cost of compromise? What is the potential outcome for compromise? Who would have a vested interest in compromise said system? Is it data theft or data manipulation that will hurt the most?

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