如何禁止直接访问FreeMarker的模板文件呢?

如果直接访问html文件或ftl文件,

其中没有被编译的变量将直接暴露出数据库的表名和字段,例如${user.name!}

是用Jetty配置?

还是在Jfinal中配置?

还是在FreeMarker配置?

感谢!

: )

评论区

JFinal

2016-09-29 22:02

有很多办法,介绍几种最简单的办法:
1:生产环境用 nginx 直接屏蔽对某些目录或对某些后缀文件的访问
2:用一下 jfinal 提供的 UrlSkipHandler 过滤掉所有对 ftl 的请求
3:将模板文件放在 WEB-INF 下面,此方法如果生产环境用到 nginx ,注意也要屏蔽,否则可以直绕过 tomcat、jetty 直接访问到 WEB-INF 目录下的所有资源
通常用第一种方式即可

happyboy

2016-09-30 09:38

@JFinal 波总,你说的第三种情况,如何绕过tomcat直接访问WEB-INF下的资源,这样:http://localhost/WEB-INF/web.xml?我试了一下会报404啊。

JFinal

2016-09-30 11:00

@happyboy 第三种情况是使用了 nginx,有一配置是 root /var/www/myproj,然后就可以通过 WEB-INF/web.xml 访问到了

happyboy

2016-09-30 12:01

@JFinal 这样配置的话只能访问静态资源吧。我现在都是这么写proxy_pass http://127.0.0.1:8080/;

JFinal

2016-09-30 14:37

@happyboy 对于 nginx 来说 WEB-INF/web.xml 以及 WEB-INF/classes 下的东东全都是静态资源,只要你没设置过滤

happyboy

2016-09-30 16:26

@JFinal 的确是这样

热门反馈

扫码入社