分层架构web容器的配置安全
转自:http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82
/ps:本以为这是一个偶然配置失误造成的问题,但最近几天无聊时测试发现,有此类似问题的站点就有上百个,所以在这里粗糙总结一下!
通常我们会碰到这样一个问题,在某个web容器中部署的应用的敏感信息是禁止直接访问的,但需要两个web容器搭配使用时,由于安全意识的疏忽,导致前者的私密信息能够通过http访问到,一个很简单的问题(可能大家也经常碰到),但经常容易被部署人员忽视,前段时间测试发现此类问题的站点还不少,其中不乏一些大型站点。
先看这张图:

发现Tomcat容器下应用的WEB-INF文件夹下能够被访问到?
上面是使用了Nginx + Tomcat容器分层,做了反向代理。
(
Nginx由于性能好、配置简单、且基本不需要软件成本;
Tomcat基本同上,但Tomcat有个缺点,处理静态文件性能低下。
综合一系列原因,对于一些创业型的或降低成本的互联网公司,都会选择j2ee及两者作为网站web容器层架构首选(优点还有很多,这里就不去讨论它)。
)
首先,看看截图:


以上只是导致这一问题,两个典型Nginx配置的case(其他场景也比较多)。
原因:在Nginx访问转接中配置了root(访问的容器),通常是整个应用的根路径,因为这样方便把静态文件交给Nginx来处理,就这么简单。
先看看应用文件中的WEB-INF文件夹安全说明:http://baike.baidu.com/view/1745468.htm (熟悉j2ee的就不多说了!)
在Tomcat容器中,所有应用的WEB-INF文件夹是不能通过页面直接访问的。因为这个文件夹下信息重要,危害看看下面的一个case:
http://www.wooyun.org/bugs/wooyun-2010-07329
其他同样问题的站点应用(另外其他有此问题的站点就不一一介绍了!):
http://www.wooyun.org/bugs/wooyun-2010-07760
由于j2ee架构的特性,导致了整个应用层的暴露!
当然,我们会通过Nginx的简单配置解决这个问题:

但Nginx的这项配置绝对不是为了j2ee的安全问题而制订的这一项安全规范。
同样的问题在Apache + Tomcat的分层结构中也出现了。
我想说的是,这一问题只是在web容器搭配使用中,在j2ee的特性方面体现由为明显的安全问题。那其他语言或其他容器中了?更或者在其他两个或多个规范中,我们是否更要注意这些敏感信息的保护了?
简单地说,一个规范的隐私问题如何在另一个规范中得到有效保护?
那么这一问题应该算是谁的安全问题或者说谁该负责了?
不好说,设计标准中“松耦合”这一词用得真好,谁愿意去主动承担更多的责任?
但从Nginx + Tomcat中,个人认为是Nginx,因为Tomcat在整个web容器分层架构中权重要低!
要做更高层的产品就必须去兼容(让这一问题成为Nginx 默认安全配置项,毕竟WEB-INF文件夹对于j2ee来说太重要了!)底层产品(当然要看这一高层产品是怎么去描述自己的)!
分层架构web容器的配置安全的更多相关文章
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...
- Geronimo tomcat: 在 Apache Geronimo 插件体系中将 Apache Tomcat 这个优秀的 Web 容器整合至其中
Apache Geronimo 灵活的插件体系将 Tomcat, OpenJPA, OpenEJB, ActiveMQ 等第三方组件集成至其中.本文从多角度介绍了在 Apache Geronimo 中 ...
- UI5-文档-2.5-开发混合Web容器
开发混合Web容器 您可以将移动应用程序开发为混合应用程序,该混合应用程序由本机应用程序包装程序(例如PhoneGap)和HTML查看器组成,用于在用户界面上显示内容. 混合应用程序的优点是可以在应用 ...
- 001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
一.整体概述 1.1.共性问题 技术瓶颈.不成体系.不能实际使用.不能落地.无法入门 1.2.目标-软件架构 专注于构建:高可扩展.高性能.大数据量.高并发.分布式的系统架构. 各项技术.组合构建分布 ...
- 1、Web容器的理解&Tomcat的安装与配置
Web容器的理解 <Java Web开发实战经典——基础篇>一书中对Web容器这一概念阐述得很好,借用其观点对Web容器加以理解: 想要运行一个Java Web的程序,则必须有相应的Web ...
- MyEclipse配置多个WEB容器
MyEclipse支持多个同版本WEB容器同时运行 打开 然后按下图操作 咱们就得到了 下面需要配置新增加WEB容器的启动路径,在新增加的WEB容器上点击右键,选择箭头指向的菜单 打开的窗口如图,可以 ...
- IOC容器在web容器中初始化——(一)两种配置方式
参考文章http://blog.csdn.net/liuganggao/article/details/44083817,http://blog.csdn.net/u013185616/article ...
- 在web.xml中配置监听器来控制ioc容器生命周期
5.整合关键-在web.xml中配置监听器来控制ioc容器生命周期 原因: 1.配置的组件太多,需保障单实例 2.项目停止后,ioc容器也需要关掉,降低对内存资源的占用. 项目启动创建容器,项目停止销 ...
- 如何在web项目中配置Spring的Ioc容器
在web项目中配置Spring的Ioc容器其实就是创建web应用的上下文(WebApplicationContext) 自定义要使用的IoC容器而不使用默认的XmlApplicationContext ...
随机推荐
- Format aborted in 格式化namenode 失败的原因
[user6@das0 hadoop-0.20.203.0]$ bin/hadoop namenode -format 12/02/20 14:05:17 INFO namenode.NameNode ...
- sass和postcss
sass是css预处理器 需要安装node-sass支持 核心是c++编写 集成 sass-loader 把scss装换成css css-loader 找出@import和url()导入的语法,告诉w ...
- OOP & DOM
OOP & DOM let Dom = Dom || {}; Dom = { checkValType(val) { let typeString = Object.prototype.toS ...
- post方式的数据抓取
public static String sendPost(String url, String param) { PrintWriter out = null; Buff ...
- [POJ1160] Post Office [四边形不等式dp]
题面: 传送门 思路: dp方程实际上很好想 设$dp\left[i\right]\left[j\right]$表示前$j$个镇子设立$i$个邮局的最小花费 然后状态转移: $dp\left[i\ri ...
- cf 843 D Dynamic Shortest Path [最短路+bfs]
题面: 传送门 思路: 真·动态最短路 但是因为每次只加1 所以可以每一次修改操作的时候使用距离分层的bfs,在O(n)的时间内解决修改 这里要用到一个小技巧: 把每条边(u,v)的边权表示为dis[ ...
- 基里巴斯(path)
基里巴斯(path) 题目描述 最近,帕特里克沉迷于世界地图上的太平洋地区.他发现了一个名字奇异的岛国:基里巴斯共和国,简称基里巴斯,是一个太平洋岛国. 其由33个岛屿组成. "可惜它快被淹 ...
- caffe+Ubuntu14.04.10 +cuda7.0/7.5+CuDNNv4 安装
特别说明: Caffe 官网地址:http://caffe.berkeleyvision.org/ 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文 ...
- 洛谷 P1653 == COGS 2043 猴子
P2107 可爱的猴子 时间限制:1000MS 空间限制:65535KB 问题描述: 树上有n只猴子.它们编号为 1 到n.1 号猴子用它的尾巴勾着树枝.剩下的猴子都被其他的猴子用手抓着.每只猴子的 ...
- js2:事件的学习,弹出窗口,状态栏字改变,地图热点的使用
原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...