放置JSP的标准实践

时间:2015-04-06 21:02:45

标签: java jsp java-ee web-applications web-inf

是否 有效,标准最佳做法才能放置

  • 可公开访问的网页位于 WEB-INF 文件夹之外,例如

      

    index.jsp, home.jsp, store.jsp, login.jsp, registration.jsp...   和

  • 这样的安全页面
      

    admin.jsp, reports.jsp, manageusers.jsp, manageproducts.jsp...

    位于 WEB-INF 文件夹中,因为安全原因(无法通过网址直接访问)通过创建控制器servlets < / strong>访问它们

  • 和包含类似

      

    navigation.jsp, header.jsp, footer.jsp, sitemap.jsp...

    受特别保护的目录直接从 url访问 ??

2 个答案:

答案 0 :(得分:2)

这听起来有点像某人正在进行辩论,并希望打破平局? :)

这可以切成千条方式......但出于安全原因,我个人不会描述将它们放在WEB-INF中的目的,这纯粹是因为你不希望用户直接访问这些资源,出于各种原因。

您可以将WEB-INF用作安全基础架构的一部分,但我不会说这是标准的最佳做法。安全应该从请求级别开始,然而您将这些资源交付给用户取决于您 - WEB-INF不是&#34;&#34;&#34;解决方案,并没有&#34;需要&#34;是。

在WEB-INF之外放置可访问的资源......好吧,当然,为什么不呢?

不同的框架可能会让您以某种方式将所有资源放在WEB-INF中,并通过各种控制器/过滤器/ serlvet机制使它们可访问,但这只是框架的属性,并且不应该引导您相信在WEB-INF之外放置资源是禁止的。

答案 1 :(得分:0)

  1. 当您将JSP页面放在WEB-INF的“外部”时,Servlet容器的Default-Servlet(例如Tomcat)将检查URL,调用JSP并将响应发送回浏览器。 / p>

  2. 当你把它放在WEB-INF中时,你编写自己的Servlet(Controller)来检查URL并用某种逻辑,转发/重定向到JSP。

  3. 良好的安全层(可能基于过滤器)将实现安全性,以处理上述两种情况。因为,你真的希望你的默认Servlet被未经授权的人“调用”吗?

    据我所知,最佳实践是在“WebContent”文件夹中创建一个名为“public”的文件夹,并在其中仅放置不安全的内容。您的过滤器应检查服务器/*的每个和以前的URL请求,并采取相应的行动。

    此外,另一个最佳实践永远不会让任何URL以“.jsp”结尾。甚至类似“欢迎”或“登录”或“注销”的东西都应由您自己的SecurityFilter + DisplayController处理

    示例:

    WebContent
    
    --public
    ----css
    ------main.css
    ----images
    ------logo.png
    ----js
    ------common.js
    --private  
    ----js
    ------ui_handler.js
    --WEB-INF
    ----classes
    ----jsp