前言
对于企业应用系统,出于安全和权限控制的目的,需要对http请求做若干控制。
比如文件上传的时候要控制不允许上传的文件后缀。
又比如控制应用程序中的哪些资源不允许被访问。
EOS项目通过 xml配置文件来实现这一需求。
Http访问管理模块
在EOS项目中,Http的请求控制是通过 user-config.xml文件来配置的。
在boot构建包中,可以找到一个 user_config.xml 文件。
编辑 user-config.xml文件,可以找到一个 Access-Http的xml片段。
<!-- http access configuration--><module name="Access-Http"><group name="FileUpload"><configValue key="TempDir">upload</configValue><configValue key="MaxSize">104857600</configValue><configValue key="InMemorySize">10240</configValue><!--files with specified ext names are not accespted when uploading --><configValue key="Exclude">exe,java,jsp,html,htm,class,jar</configValue></group><group name="Encoding"><!-- the charset of the incoming HttpServletRequest--><configValue key="Request">UTF-8</configValue></group><group name="Suspend"><!-- the time to suspend, waiting for the xsd loading,in seconds.--><configValue key="TimeOut">60</configValue></group><group name="Login-Filter"><!-- pages that can be accessed by any one including those not login --><configValuekey="Exclude">/api/afc/login/third-party/validate,/api/afc/login/third-party/types,/api/taskcenter/push-task/*,/api/bfp/messagecenter/send-process-message,/api/afc/component-centers,/api/lowcode/resources/*/runtimes,/api/afc/preferences/info/*,/api/lowcode/shares/actions/*,/api/afc/login/clientId,/,*.gif,*.svg,.ttf,*.woff2,*.woff,*.jpg,*.json,*.ico,*.js,*.css,*.png,*.html,/api/afc/oauth2/*,/api/afc/login/third-party/auth,/api/afc/login/third-party/qrConnect,/api/afc/validation-code,/swagger-ui.html,/v2/api-docs,/webjars/*,/swagger-resources/*,/afc,/afc/,/api/afc/login,/api/afc/login/password/key,/actuator/*,/om/*,/common.remote,/jmxDefault.jmx,/common.download,/api/afc/materials/font/*,/api/afc/components/*,/api/afc/job/api/*</configValue><!-- <configValue key="Include">*.flow,*.flowx,*.jsp,*.html,*.ajax,*.ext,*.action,*.beanx</configValue> --><configValue key="Include">/*</configValue><!-- the page to display when user not login --><configValue key="LoginPage"></configValue></group><group name="Accessed-Mode"><configValue key="Portal">false</configValue></group><group name="Http-Security"><configValue key="isOpenSecurity">false</configValue><configValue key="Exclude">**/common.download</configValue><configValue key="regexs">eval\s*?\([^\)]+?\),alert\s*?\([^\)]+?\),new\s+?Function\s*?\([^\)]+?\),window\[[^\]]+?\]\s*?=</configValue></group></module>
这段配置信息的大概意思如下:
-
FileUpload(文件上传):
TempDir
:指定上传文件的临时目录为upload
。MaxSize
:设置上传文件的最大大小为 104857600 字节(即 100 MB)。InMemorySize
:设置内存中存储的上传文件的最大大小为 10240 字节。Exclude
:定义不允许上传的文件扩展名,包括exe, java, jsp, html, htm, class, jar
。
-
Encoding(编码):
Request
:设置接收 HTTP 请求的字符集为UTF-8
。
-
Suspend(挂起):
TimeOut
:设置等待 XSD 加载挂起的超时时间为 60 秒。
-
Login-Filter(登录过滤器):
Exclude
:列出可以被任何人访问的页面,包括未登录的用户。列出了各种 API 端点和静态资源,如图片、JavaScript、CSS 等等。Include
:设置允许所有页面(/*
)。LoginPage
:定义未登录用户访问时显示的页面。
-
Accessed-Mode(访问模式):
Portal
:设置为false
,表示未启用门户模式。
-
Http-Security(HTTP 安全):
isOpenSecurity
:设置为false
,表示未启用 HTTP 安全。Exclude
:排除特定的 URL 匹配模式**/common.download
。regexs
:定义正则表达式模式,用于防止安全漏洞,如eval
,alert
,new Function
,window[]
的直接赋值。
更细节的解释,就希望各位自己多研究研究了。
什么时候需要维护Access-Http
如果发现EOS项目在浏览器访问的时候,总是提示"登录信息已过期!"
大概率是因为 Login-Filter 这部分的配置出现了问题。
还有,当文件上传出现文件太大,上传失败的问题,也是这个部分的xml需要调整一下。