第九章 CSP 架构 - CSP 应用程序设置
CSP 应用程序设置
当 CSP
服务器接收到传入的 HTTP
请求时,它使用本地 CSP
应用程序设置来确定如何处理请求。本节介绍 如何使用 CSP
应用程序设置处理 CSP
应用程序请求。
启用对 %CSP
页面的应用程序访问
以下规则管理对页面和类的访问:
- 默认情况下,允许用户应用程序访问以下页面:
- 允许
/csp/sys/
应用程序及其所有子应用程序的页面 - 允许使用
isc/studio/templates/
和/isc/studio/usertemplates/
应用程序的页面
- 默认情况下,允许用户应用程序访问所有非 % 类
- 用户应用程序还可以访问以下类:
%CSP.Broker
,%CSP.StreamServer
,%CSP.Login
,%CSP.PasswordChange
,%CSP.PageLookup
被允许%ZEN.SVGComponent.svgPage
和%ZEN.Dialog.*
是允许的,有以下附加条件
- 不允许所有其他
%ZEN.*
类 - 允许所有其他
%Z*
类
- 允许所有
%z*
类
除了检查 CSP
应用程序中的设置外,还会检查允许的类。可以通过导航到管理门户上的系统管理 > 安全 > 应用程序 > Web 应用程序来查看和更改应用程序设置。因此,类引用必须通过两组测试才能被允许。
要允许访问其他类,请在 %SYS
命名空间中配置Global
^SYS("Security","CSP","category")
,其中 category
是 AllowClass
、AllowPrefix
或 AllowPercent
。以下部分描述了这些选项
重要提示:首先应用默认规则,然后按列出的顺序应用类别来完成检查。此外,每个关键字都可以被多次调用。这意味着可以使整个包可访问,然后限制对该包中的一个类的访问。
Background Information on the ^SYS Global
^sys global
名称空间中包含配置信息,从查看此全局的相关部分的当前内容开始会很有帮助。为此,请打开终端并切换到%sys
命名空间。然后输入以下命令:
zw ^SYS("Security", "CSP") 复制代码
然后,系统为每个节点显示一行,显示其当前值。例如:
%SYS>zw ^SYS("Security", "CSP") ^SYS("Security","CSP")=3 ^SYS("Security","CSP","AllowClass","/api/atelier/","%Api.Atelier")=1 ^SYS("Security","CSP","AllowClass","/api/deepsee/","%Api.DeepSee")=1 ^SYS("Security","CSP","AllowClass","/api/document/","%Api.Document")=1 ^SYS("Security","CSP","AllowClass","/csp/samples/","%CSP.UI.Portal.About")=1 ^SYS("Security","CSP","AllowClass","/csp/samples/","%SOAP.WebServiceInfo")=1 ^SYS("Security","CSP","AllowClass","/csp/samples/","%SOAP.WebServiceInvoke")=1 ^SYS("Security","CSP","AllowPrefix","/csp/samples/","%DeepSee.")=1 复制代码
Category: AllowClass
如果应用程序依赖于调用特定的类,请使用AllowClass
选项使该类可用。
重要提示:如果应用程序依赖于调用任何类,而不是“启用对%CSP页的应用程序访问”部分开头列出的类,则使用它可能是不安全的。建议确定是否需要调用此类,并为部署执行风险评估,以便您了解使类可用的含义。
要使给定的Web
应用程序能够调用特定类,请在%sys
命名空间中使用以下命令:
Set ^SYS("Security", "CSP", "AllowClass", "web-app-name", "package.class") = value 复制代码
其中
Web-app-name
是Web
应用程序的名称,后跟一个尾随斜杠。
要使所有Web
应用程序都能使用给定的类或包,请将web-app-name
指定为0
;在这种情况下,您可以省略括起来的引号。
Package.class
是类的完全限定名。如果省略类,则允许指定包中的所有类。- 值为
1
或0
。
如果将其指定为1
,则Web
应用程序可以调用此类(或包)。
如果将其指定为0
,则此Web
应用程序无法调用此类(或包)。
例如,要使/csp/webapp
应用程序能够使用类%User.Page
,可以使用以下命令:
Set ^SYS("Security", "CSP", "AllowClass", "/csp/webapps/", "%User.Page") = 1 复制代码
或者,要使所有Web
应用程序都能使用%User.Page
,可以使用以下命令:
Set ^SYS("Security", "CSP", "AllowClass", 0, "%User.Page") = 1 复制代码
再举一个例子,要使/csp/myapp
应用程序能够使用%USER程序包中除%user.Other
类以外的所有类,可以使用以下两个命令:
Set ^SYS("Security", "CSP", "AllowClass", "/csp/myapp/", "%User") = 1 Set ^SYS("Security", "CSP", "AllowClass", "/csp/myapp/", "%User.Other") = 0