TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
观点一:(较为赞同)1 Q1 P0 g' n5 M1 c( Z: F' [. J
安全性不是真正的原因,因为jsp是要解析后才显示到浏览器的,即使用户知道你jsp的路径,也不可能通过浏览器看到jsp源码的,而如果是通过其它手段入侵服务器的话,放在WEB-INF又和放在别的地方有什么区别呢???& c/ b& P7 E( V, ?" A% U
真正的原因是,对于早期直接嵌入java代码的jsp,是直接给出jsp路径给用户访问的,这种情况恰恰不能放在WEB-INF,而到了现在的mvc模式,jsp已经不是曾经那个包含完整逻辑的jsp,而仅仅充当view层的模板,必须要填入model数据后进行渲染,才能生成可读的页面,这样的模板是不能让用户直接访问的,直接访问的话要么是一堆各种空白,或者一堆占位符,甚至一堆NullPointException,所以需要放到WEB-INF里。补充一下,“安全性问题”指的是“不允许你访问,否则会对我不好”,而这里的情况其实是“不建议你访问,否则会对你不好”,应该属于健壮性的范畴。* e1 S3 K) C, k$ C% J9 ~9 s5 ]
5 _! R, }1 k X5 r, A$ e, ^5 y
观点二:2 W2 i2 I; k8 u+ d0 d
放到WEB-INF下的Jsp文件,如果你直接去访问这个Jsp是不可以的,必须通过Action的跳转,这样就能够理解为什么安全性高了,对于用户是不可见的,对于一些对于用户,可以直接访问的,如,登录,注册页面,可以直接放在webroot下,这个也是根据你系统的需求了。0 a3 L7 u4 R. M+ {8 e0 _; G
$ }7 N% k' v: ?# l9 p7 u
观点三:+ e# k1 C9 R$ A& N9 _; S
通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问。所以说放在哪里就看习惯是什么样了。
1 u. P7 O! W* n. `# ?" @一般项目都是要求隐藏性的,只让客户通过请求访问而不是直接访问jsp页面。若放在webroot下面,肯定要加一个过滤器阻止所有对*.jsp的访问。只要比较的话:; D- N6 V" ]/ s) l0 @8 `" T
放在webroot下面:优点,程序结构清晰,便于编码和维护;缺点,要加过滤器。
' c& ]$ [; g& \+ h6 V6 t0 u放在web-inf下面:优点,不用过滤器;缺点,打乱了程序结构,编码和维护麻烦
: b3 Y5 K- q' t- Y; a5 E观点四:
& A9 ^* i# v& V' A# @. `! v2 c为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。JSP存放在 WEB-INF 目录下更为安全2 Y. J6 W$ M6 O) G
/ a: Y; W. V0 I: ? h
|
|