【问题标题】:Tomcat war code visible?Tomcat战争代码可见?
【发布时间】:2013-09-10 14:00:15
【问题描述】:

我有一个 war 文件,其中一个类从 Java 调用 MySQL DB,因此在源代码中以纯文本形式包含 MySQL 登录信息。显然,出于安全考虑,我不希望这对外界可见。因此问题是,部署在 Tomcat 上的 war 文件中的源代码是否对外界可见?

【问题讨论】:

  • 不,war文件对外不可见
  • 在应用程序外部使用 Tomcat 中配置的 DataSource。管理控制台或查看 Tomcat 参考。虽然 WEB-INF 不可见。
  • 为什么你的战争中有源代码?

标签: java mysql security tomcat


【解决方案1】:

这不是问题,但不灵活。使用 JNDI 更有用。在 context.xml 中放置如下内容:

<Resource
        name="jndi_name_for_datasource"
        auth="Container"
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        testOnReturn="true"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minIdle="1"
        initialSize="1"
        minEvictableIdleTimeMillis="30000"
        username="solaris"
        password="super"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        url="jdbc:oracle:thin:@localhost:1521:slife"
    />

并使用查找 JNDI 名称

【讨论】:

    【解决方案2】:

    不,它不会是可见的。前提是无法下载war-一旦下载了war-任何人都可以找到该类并对其进行反编译以查看密码。

    更好的选择是配置 DataSoure - 这不在你的战争范围内。

    【讨论】:

      【解决方案3】:

      但我认为这仍然是一个安全问题,如果其他人可以访问 tomcat 服务器。例如其他员工或管理员。

      我建议您在代码中添加简单的加密/解密技术,以防止其他人找出密码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 2018-12-21
        • 1970-01-01
        • 2018-11-03
        • 1970-01-01
        • 2018-08-30
        • 2014-04-28
        相关资源
        最近更新 更多