是否 有效,标准和最佳做法才能放置
可公开访问的网页位于 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访问 ??
答案 0 :(得分:2)
这听起来有点像某人正在进行辩论,并希望打破平局? :)
这可以切成千条方式......但出于安全原因,我个人不会描述将它们放在WEB-INF中的目的,这纯粹是因为你不希望用户直接访问这些资源,出于各种原因。
您可以将WEB-INF用作安全基础架构的一部分,但我不会说这是标准的最佳做法。安全应该从请求级别开始,然而您将这些资源交付给用户取决于您 - WEB-INF不是&#34;&#34;&#34;解决方案,并没有&#34;需要&#34;是。
在WEB-INF之外放置可访问的资源......好吧,当然,为什么不呢?
不同的框架可能会让您以某种方式将所有资源放在WEB-INF中,并通过各种控制器/过滤器/ serlvet机制使它们可访问,但这只是框架的属性,并且不应该引导您相信在WEB-INF之外放置资源是禁止的。
答案 1 :(得分:0)
当您将JSP页面放在WEB-INF的“外部”时,Servlet容器的Default-Servlet(例如Tomcat)将检查URL,调用JSP并将响应发送回浏览器。 / p>
当你把它放在WEB-INF中时,你编写自己的Servlet(Controller)来检查URL并用某种逻辑,转发/重定向到JSP。
良好的安全层(可能基于过滤器)将实现安全性,以处理上述两种情况。因为,你真的希望你的默认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