如果不用tomcat,直接使用jfinal内置服务,安全问题需要怎么优化?

我打算上一项新业务,会有大量小应用部署到服务器上,采用传统的tomcat的方式部署麻烦,能否直接用jfinal内置undertown来做服务,在安全性上有啥建议?如果有办法能防止旁注那就太棒了。

评论区

lcmkc

2021-02-25 10:55

同问。。我目前生产环境undertow是用root运行的,不知道能否使用子用户权限运行项目。。这样即使被传马也对系统本身没有多大伤害。。

flash866

2021-02-25 11:14

@lcmkc docker我不熟悉,能解决问题不

JFinal

2021-02-25 11:35

jfinal undertow 可以用于部署,轻量、高效。 我已经用于生产环境快三年了,极其稳固、方便

安全性上与 tomcat 没有本质区别,在自己的代码中注意安全就行,例如做好 sql 注入、XSS、CSRF 防护

JFinal

2021-02-25 11:38

@lcmkc 是否用 root 运行完全与 jfinal 或者 undertow 无关

切换到相应的用户,直接运行就可以了

在 "非 root" 用户状态下,使用 sudo jfinal.sh start 可以以 root 用户运行

这纯粹是 linux 知识,与 jfinal 肯定是无关的

但你要注意权限问题, 运行起来以后,你的项目代码访问到的文件需要赋予好权限。例如起码你的项目部署目录必须要是当前用户能访问的,仍然是纯 linux 问题

flash866

2021-02-25 13:50

@JFinal 老大,使用docker是否能限制程序的访问权限,比如将其限制在一个目录下,只能访问这个目录下的文件。

SuperEric

2021-02-25 15:41

@flash866 此类安全问题可以通过多用户进行隔离,即每个用户启动自己的实例。旁注问题主要与部署用户及用户权限设置有关。业界一般都是通过用户隔离解决。

flash866

2021-02-26 10:02

@SuperEric 多谢,每个用户启用自己的实例,这个能稍微详细一点说明吗?

SuperEric

2021-02-26 14:21

@flash866 应用A,新建linux用户usera,应用A启动目录为/home/usera/app1,执行/home/usera/app1/start.sh启动应用;应用B,新建linux用户userb,应用A启动目录为/home/userb/app2,执行/home/userb/app2/start.sh启动应用;

flash866

2021-03-01 10:27

@SuperEric 好的。docker我没用过,能否用它解决这个问题呢是否更简单