验证请求源是来自Internet还是Intranet

时间:2012-07-04 10:25:28

标签: java java-ee weblogic

我有在Internet上运行的应用程序,它也包含一些管理模块。我不想让用户在Internet上访问我的管理模块。我希望来自内部网的请求可以访问管理模块。有没有办法控制它,而无需开发一个为管理组件提供服务的新应用程序?

4 个答案:

答案 0 :(得分:1)

如果您使用的是servlet,则可以添加过滤器并分析客户端IP地址(请参阅this question)。
请注意,无法保证您以任何方式确定正确的地址 更好的方法是将此方法与某种身份验证(用户/密码,客户端证书等)相结合。

如果可能,单独的应用程序也会更好。这样,您可以简化部署过程(在不同端口中运行的应用程序等)并使其更容易扩展,因为您的管理和常规应用程序负载,安全性,可用性等很可能具有不同的要求。 / p>

答案 1 :(得分:0)

我不确定这是否适用于您的情况,但是如果管理模块 接受特定端口的连接,您可以尝试关闭此端口 在你的路由器/网关(或任何你用来连接内部网和 互联网)设置,因此不允许外部任何人访问模块。

答案 2 :(得分:0)

从便携式Java角度来看,实现此目的的最简单方法是创建一个检查IP地址和请求的URL的过滤器。如果url是admin模块的一部分且IP是内部的,那么你继续链。否则你重定向或中止。

话虽如此,Weblogic也可能有其他技术来实现这一目标。但是,看到您在Weblogic服务器上运行它,我将假设这是一个企业级应用程序。在这种情况下,您可能需要考虑将其构建为单独的模块,以实现安全性和负载平衡。随着越来越多的用户访问您的应用程序,您将需要更多的服务器来处理负载。但是,您可能不需要管理模块的相同容量。因此,将管理模块作为自己的应用程序托管将允许您将其托管在一个内部App Server上,而应用程序本身则分布在更大的服务器场中。

最后,请记住,欺骗IP地址相当容易,因此,除非您有其他形式的身份验证(例如:用户名/密码,SSL证书交换等),否则您将打开应用程序以获得一些重要的安全性孔。

在做出架构决策时需要考虑的事情。

答案 3 :(得分:0)

什么是底层网络服务器?如果是apache,请使用.htaccess规则。

http://www.javascriptkit.com/howto/htaccess5.shtml