防止远程访问网页

时间:2015-07-24 07:15:36

标签: security java-ee web

是否可以阻止远程访问网页? 假设我有我的page1(主页),它显然可以通过其URL访问。然后我有page2(管理页面),我只想从部署我的Web应用程序的机器上访问它。

这可能听起来像this种情景。不应该远程访问page2而不是管理控制台。

1 个答案:

答案 0 :(得分:0)

请更准确地说你在使用什么?

我假设您不使用任何框架,因此您只有serlvets和.jsp页面。

首先,将adminpage.jsp放到WEB-INF文件夹中。从您的应用程序中看不到此文件夹的内容(未经您的许可)。

其次,创建将拦截您对servlet的请求的过滤器(尝试对所有请求使用servlet,不要使用直接链接到.jsp页面,因为这只是添加一些安全性的方法。这些servlet应该像控制器一样在MVC)。要创建Filter,您需要添加将实现接口Filter

的类
 public MyFilter implements Filter {
    ...    
    public void doFilter(ServletRequest request, ServletResponse response,
                                 FilterChain filterChain)
            throws IOException, ServletException {
               if (request.getRemoteAddr.equals("your server address") {
                    filterChain.doFilter(request,response);
               }
    }
    ...
}

您会看到,如果IP地址与您的服务器地址相同,则此请求将继续进行。过滤器界面有两个方法init()destroy(),您可以将它们留空。要将过滤器与servlet连接,请将以下内容添加到web.xml中。

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>fullPackagePath.MyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/url-to-the-admin-panel-servlet</url-pattern>
</filter-mapping>

当然,您需要将servlet与url一起转发到admin.jsp页面。