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

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

>通过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除此之外还有单独的漏洞)

解决方法

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

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

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

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...