【问题标题】:Denying direct access to jsp pages拒绝直接访问 jsp 页面
【发布时间】:2011-11-09 02:16:04
【问题描述】:

我在我的应用程序中使用 struts 1.3,所有 jsp 页面都通过控制器(动作类)转发。但是如果我直接访问jsp页面,我就可以访问它。如何防止这种情况发生?

【问题讨论】:

    标签: java jsp struts


    【解决方案1】:

    我认为最好的选择是将您的网页放在 WEB-INF 文件夹中 - 这样它们就不会被直接访问,但是在您的 servlet 中您可以有类似的东西:

    public class ControllerServlet extends HttpServlet {
    
        /**
         * Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    
            String userPath = request.getServletPath();
    
            // if category page is requested
            if (userPath.equals("/category")) {
                // TODO: Implement category request
    
            // if cart page is requested
            } else if (userPath.equals("/viewCart")) {
                // TODO: Implement cart page request
    
                userPath = "/cart";
    
            // if checkout page is requested
            } else if (userPath.equals("/checkout")) {
                // TODO: Implement checkout page request
    
            // if user switches language
            } else if (userPath.equals("/chooseLanguage")) {
                // TODO: Implement language request
    
            }
    
            // use RequestDispatcher to forward request internally
            String url = "/WEB-INF/view" + userPath + ".jsp";
    
            try {
                request.getRequestDispatcher(url).forward(request, response);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    

    取自:http://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html

    【讨论】:

      【解决方案2】:

      把你所有的jsp-s放在WEB-INF文件夹中(例如WEB-INF/jsp文件夹),不要忘记改变你的jsp-s位置映射。

      【讨论】:

      • +1 - WEB-INF 隐藏是最常用的方法。如果您阅读文档和示例,他们经常使用此设置。
      • 不幸的是,似乎 Jetty 不允许这样做。也许对我来说设置不好?
      【解决方案3】:

      过滤器用于绕过或中断请求,所以使用过滤器来限制请求,如果它的url中不包含.do。下面是过滤器的好教程

      Filters

      【讨论】:

        【解决方案4】:

        您可以使用过滤器并使用请求 .jsp 页面的 url 限制请求,并且只允许请求 .do 的请求

        【讨论】:

          猜你喜欢
          • 2016-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-28
          • 2023-03-05
          • 2016-02-03
          • 2019-01-08
          • 2012-12-27
          相关资源
          最近更新 更多