最近开始需要比较频繁的往Tomcat中仔细研究部署Web应用, 其中一种是通过访问http://localhost:8080/manager/html
Manager web应用.
在$CATALINA_BASE/conf/tomcat-users.xml
定义<user>
时, 有的文章把管理员("Manager")的4种角色("role")全配置上了, 而有的仅配置了2个, 不知孰对孰错, 于是在官网上查了doc, 下面简单归纳下:
Tomcat在web.xml
文件里定义了4种管理员角色, 分别是:
manager-gui -- 可访问HTML接口.
manager-status -- 仅可访问服务器状态("Server Status")页面(网上查到的是它与前者配合共同使用)
manager-script -- 可访问
web.xml
文档里提到的工具友好的普通文本("tools-friendly plain text")接口(猜测应该是SSI和CGI), 并可访问服务器状态页面manager-jmx -- 可访问JMX代理接口和服务器状态页面
随后, 官方专门提及了一种网络攻击手段, CSRF(Cross-Site Request Forgery)attacks, 即: 跨站请求伪装, 它能篡改用户信息, 可参看维基上的解释Cross-site request forgery.
官方拍胸脯说了, HTML接口是受保护的, 不怕CSRF攻击的, 但文本("text")和JMX接口是不受保护, 存在被攻击风险的. 换句话说, manager-gui角色的管理员是安全的, 而manager-status和manager-script是危险的.
为此,官方特别提醒 :
第一, 当使用manager-script或manager-jxm角色访问Manager应用管理时(比如测试普通文本和JMX接口), 你一定要在结束管理会话后关闭浏览器的所有窗口. 如果你不关闭浏览器, 再去浏览其他页面, 那么你很可能成为CSRF攻击的受害者.
第二, 强烈建议不要给manager-gui角色授予manager-script或manager-jmx角色.
另外, 由于JMX代理接口属于较底层的接口, 别有用心的人可以利用它的命令做很多事, 所以当你启用manager-jmx角色时一定要小心些.
官网中很多例子都是使用的文本接口, 所以用的是manager-script角色.
总结下:
不要将manager-gui角色与manager-script或manager-jmx任一角色混合使用.
在使用manager-script或manager-jmx, 在结束管理会话时, 必须要关闭浏览器的窗口, 避免被CSRF攻击.
manager-jmx是较为底层的接口, 容易被别有用心的人利用, 使用的时候一定要留心(没有这方面需求, 就别给
<user>
授予该角色了.)
完.