我有一个旨在部署在互联网上的Java Web应用程序。它需要数据库连接。根据托管环境,Web应用程序的部署者可能无法配置适当的数据源,因此应用程序需要在重新启动应用程序时将其数据库连接信息存储在某处以重新加载。
我还需要给一个用户管理员权限。如果这只是第一个创建的用户帐户,那么在部署应用程序和安装程序登录的时间之间,管理员帐户可能会被劫持的可能性很小。
我需要安全地执行这两项任务,并且这种方式是Web应用程序的最低标准。
澄清:首次使用时,我希望应用程序设置管理员用户。该管理员用户将拥有系统中的所有安全访问权限。不知何故,我需要确定该用户被调用的内容以及他们的密码是什么。如果应用程序部署在共享Web主机上,则应用程序将从部署时开始生效。如果我允许通过Web界面配置站点,则在站点所有者有效劫持站点之前,未经授权的人很可能会进行Web配置。我正在寻找一种优雅的方法来避免这种情况。
答案 0 :(得分:1)
好的,回答你修改过的问题......
你真的没那么多。如果您不希望管理员在服务器上安装期间配置他们的帐户,那么总会有一个小窗口,其他人可以在此之前通过Web创建它。
所有解决方案都涉及修改服务器上的内容(因为这是他们证明自己是真正的管理员的方式)。是的,这可能意味着配置文件......
首次连接时,请为用户提供 令牌。基本上是一些哈希 盐+他们的+他们的用户代理等 然后让他们登录服务器 并将此令牌提供给您的应用, 可能在配置文件中。如果 生成令牌下次匹配 一个在配置中,允许他们 继续进行。
更简单的解决方案就是让它们放好 他们在配置中的IP地址 一开始,只是允许这个IP。 (假设他们知道他们的IP地址是什么)
或者,允许帐户 创造,但拒绝做任何事情 否则直到删除某个文件 服务器。许多PHP应用程序都这样做 用install.php,但文件 可以是你测试的任何东西。
答案 1 :(得分:0)
最常见的方法是通过静态配置文件,采用一些简单的文本格式。
该文件与应用程序位于同一系统上,并且应该与代码一样安全(例如,如果某人有权修改不应该能够的配置,那么他们就不能轻易修改代码?)
答案 2 :(得分:0)
对于我们的一个Java Web应用程序,我们使用Spring依赖注入来配置大部分应用程序。如果创建一个包含所有可配置属性的“Configuration”类,则可以在Java中连接通过Spring XML上下文文件配置的bean。然后,您可以为不同的环境创建不同版本的XML文件,并将它们自动构建到特定的包中,这些包可以一次性部署。如果你想全力以赴,你基本上可以使用Spring配置应用程序中的每一个类,这非常有用。
获得Spring设置有一点点开销,但实际上并不太难,有很多教程。