Java中面向Internet的Web服务器的安全选择是什么?

Nak*_*ble 7 java security webserver

我需要实现一个可以从互联网上公开访问的服务器.服务器有一个非常简单的任务:

  • 通过HTTPS接受来自用户的表单POST(实际的HTML表单位于不同的站点上)
  • 将表单帖子重写为JSON
  • 通过单独的HTTPS连接将其发送到内部服务器,并进行多服务器故障转移
  • 等待JSON中的回复,包含成功或错误原因
  • 将"303"重定向从一个返回到成功URI或失败URI,将错误原因作为查询参数

这个服务器通常承受的负载是最小的,但由于没有访问限制,服务器显然可以被DOS等攻击.

但是,真正的问题是安全性对于服务器来说绝对是最重要的 - 服务器参与支付交易的数量足够大,使其成为理想的破解目标.服务器位于IPS后面,但是直接连接到互联网,将直接终止来自最终用户浏览器的HTTPS连接,而无需任何中间反向代理或SSL加速器等.

所以,我的问题是,哪个Java Web服务器是最安全的选择呢?

或者,如果你真的认为这些请求不应该由Java直接接收,而是由lighttpd或其他东西接收,你可以提出其他建议.但只有它能满足上面给出的要求.


一个非常好的答案将触及这些问题:

  • OpenSSL与Java加密与替代方案的相关安全性(都存在漏洞)
  • Java VM功能的相关安全性(例如最近的XML解析漏洞)
  • Web服务器的HTTP头解析的相关安全性(几乎所有似乎都有漏洞)
  • 可选压缩的相关安全性(zlib存在漏洞,mod_deflate在此之上存在单独的漏洞)

Whi*_*g34 6

我认为您的主要关注点应该是遵循最佳安全实践并使您的软件保持最新状态,而不是您选择的软件.预测未来的漏洞几乎是不可能的.具有很多过去漏洞的软件并不一定意味着它不太安全,可能更频繁地定位并因此更频繁地修复.在这方面,您需要定期更新的软件,并且您可以轻松地定期获取这些更新.

我建议使用Tomcat并按照改进Apache Tomcat安全性的步骤进行操作.Tomcat具有通用和开源的优点,因此它得到了很多关注和快速修复.许多攻击都是针对你甚至不需要的东西,所以禁用你能做的一切.将web.xml配置为仅接受您期望的URL路径,并为其他所有路径提供错误.

听起来您不需要在Web容器前面使用Apache HTTPD.最好是减少攻击向量的数量,并将Web请求直接发送到Web容器.无法知道哪个HTTPD或Java会为SSL和gzip发现更多漏洞.然而,如果您只使用Java,那么您至少不会对HTTPD的其余部分开放,而不是Java的一组有限的本机实现问题.

确保Java和您的Web容器保持最新.如果没有,网络和操作系统强化也应该进行研究.您可能还希望查看每日扫描Web漏洞以了解新威胁.