02/21/24-18:32:48:515 (7568) 3 InterSystems IRIS Internal Failure

Access Violation (0xC0000005) occurred at 00007FFF3DE9C4E8
Process = 00001D90 Thread = 0000203C
Exception Count=1 b_msyslog=0 b_DumpVar=0 b_DumpVar2=0
b_GRelease=0 b_GRelease2=0 b_DeqRes=0 b_DeqRes2=0
Job Type = CSP server
ContextFlags = 0010005F Registers:
RAX=00007FFF3DE9C4E8 RBX=000000C2E5554800 RCX=000000C2E7AFFC00
RDX=000000C2E7B00000 RSI=00000000FFFFFFC0 RDI=00000000000003FF
RSP=000000C25CEBD2F8 RBP=0000000000000000 R8 =0000000000000001
R9 =00007FFF3DE60000 R10=000000C2E7AFFC00 R11=000000C2E7AFFC00
0 1
0 82
文章
· 十月 16, 2022 阅读大约需 4 分钟
第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

`` 是一种无状态协议;每个请求都不知道以前的请求。虽然这适用于为用户提供简单静态内容的网站,但它使得开发交互式动态 Web 应用程序变得困难。为了解决这个问题,CSP 提供了所谓的Session 管理。

CSP.SessionSessions

Session 话表示在特定时间段内从特定客户端到特定应用程序的一系列请求。

CSP 自动提供会话跟踪;无需执行任何特殊操作即可启用它。 CSP 应用程序可以通过对象中的 %CSP.Session 查询和修改其会话的各个方面。 CSP 服务器通过 ObjectScript %session 变量使该对象可用。

1 0
0 82
文章
· 十月 8, 2022 阅读大约需 2 分钟
第十章 CSP 架构 - Category

第十章 CSP 架构 - Category

Category: AllowPrefix

如果应用程序依赖于调用以同一组字符开头的多个类或包,请使用AllowPrefix选项。

重要提示:如果应用程序依赖于调用上面列出的以外的任何类,则使用它可能是不安全的。建议确定是否需要调用此类,并为部署执行风险评估,以便了解使类可用的含义。

要使给定的Web应用程序能够调用以相同字符集开头的类或程序包,请在%sys命名空间中使用以下命令:

Set ^SYS("Security", "CSP", "AllowPrefix", "web-app-name", "prefix") = value

其中

1 0
0 78
文章
· 十月 10, 2022 阅读大约需 3 分钟
第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

CSP 的主要任务是提供动态内容以响应传入的 HTTP(超文本传输协议)请求。本节介绍 CSP 如何处理 HTTP 请求的基础知识。

HTTP 是一种简单的协议,其中客户端向服务器发出请求。 HTTP 是一种无状态协议;客户端和服务器之间的连接只持续为服务请求所需的时间。每个 HTTP 请求都包含一个请求标头,该标头指定请求类型(例如 GETPOST)、一个 URL 和一个版本号。请求还可能包含附加信息。 CSP 自动确定它应该处理哪些 HTTP 请求,将它们分派到运行在 Caché 服务器上的适当类,并将请求信息打包成易于使用的对象(例如对象中的 %CSP.Request)。

1 0
0 78
文章
· 十月 12, 2022 阅读大约需 3 分钟
第十四章 CSP 中的 HTTP 请求 - CSP.Page 类

第十四章 CSP 中的 HTTP 请求 - CSP.Page 类

CSP 服务器上,所有 HTTP 请求都通过调用由类中的 %CSP.Page 定义的方法来处理。类中的 %CSP.Page 从不直接处理请求本身;它只是定义了处理 HTTP 请求所需的接口。实际的事件处理的 %CSP.Page 的子类完成(手动创建或作为处理 CSP 源文件的结果)。

%CSP.Page 的子类永远不会被实例化;也就是说,不会在对象中创建 %CSP.Page%CSP.Page 定义的方法都是类方法,不需要对象即可调用。正如我们将看到的,这些方法所需的任何状态信息都由 CSP 服务器管理的其他对象(例如%CSP.Request 和对象中的 %CSP.Session)提供。

2 0
0 78
文章
· 十月 14, 2022 阅读大约需 3 分钟
第十六章 CSP 中的 HTTP 请求 - %CSP.Request 对象

第十六章 CSP 中的 HTTP 请求 - %CSP.Request 对象

%CSP.Request 对象

CSP 服务器响应 HTTP 请求时,它将有关传入请求的信息打包到对象中的 %CSP.Request 实例中。可以使用变量 %request 来引用此对象。

URL 属性

要查找传入 HTTP 请求的 URL(不包括查询字符串),对象中使用 %CSP.RequestURL 属性:

 Write "URL: ", %request.URL

数据属性和 URL 参数

URL 可能包含参数列表(也称为 URL 查询)对象中的 %CSP.Request通过其 Data 属性使这些可用。

例如,假设传入的 URL 包含:

1 0
0 75
文章
· 十月 11, 2022 阅读大约需 3 分钟
第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析

第十三章 CSP 中的 HTTP 请求 - CSP 服务器事件流

CSP 服务器收到来自 CSP 网关的请求时,它会确定该请求是针对静态页面还是针对 CSP 类的。如果是静态页面,它会立即将页面发回。如果是针对 CSP 类,它会执行以下操作:

  1. 确定此请求属于哪个会话。如果没有,它会启动一个新会话。
  2. 确保在正确的 Caché 命名空间中处理请求。
  3. 确保对象中正确的 %CSP.Session可用,并根据 HTTP 请求中包含的信息在对象中创建 %CSP.Request 的实例。如果需要任何解密,它也会这样做。
  4. 构造 %CSP.Response 对象以允许应用程序修改响应标头。
  5. 确定应由哪个类处理请求并调用其 Page 方法(该方法又调用 OnPage 回调方法)。

CSP 服务器 URL 和类名称解析

0 0
0 72
文章
· 十月 20, 2022 阅读大约需 4 分钟
第二十二章 CSP Session 管理 - Private Pages

第二十二章 CSP Session 管理 - Private Pages

CSP 提供了私有页面的概念。只能从同一 CSP 会话中的另一个页面导航到私有页面。私有页面对于想要限制对某些页面的访问的应用程序很有用。

例如,假设有一个名为 private.csp 的私有页面(CSP 示例页面之一)。用户无法直接导航到 private.csp(例如,通过输入其 URL)。用户只能从另一个 CSP 页面中包含的链接导航到 private.csp。引用 CSP 页面中包含的链接不能是绝对 URL,以 http:// 开头。只有相对于引用页面的路径才被私有页面方法正确加密/标记。即:下面的前两个链接将相同的令牌传递给目标私有页面 test2.csp

0 0
0 66
文章
· 十月 6, 2022 阅读大约需 4 分钟
第八章 CSP 架构 - CSP 网关配置

第八章 CSP 架构 - CSP 网关配置

CSP 网关配置

CSP 网关是安装在 Web 服务器上并由其加载的 DLL 或共享库。 CSP 网关检测对扩展名为 .csp.cls 的文件的任何请求,并将它们发送到定义的 Caché 服务器进行处理。

CSP 网关管理器

可以使用 CSP 网关管理器(CSP Web 网关管理页面)或直接编辑其配置文件 csp.ini 来配置 CSP 网关。

CSP 网关管理器是一个小型 Web 应用程序,可以在浏览器中使用它。您可以通过导航到系统管理 > 配置 > CSP 网关管理来访问 CSP 网关管理器。默认情况下,它会访问专用 Web 服务器的 CSP 网关管理器。

2 0
0 61
文章
· 十月 18, 2022 阅读大约需 3 分钟
第二十章 CSP Session 管理 - 状态管理

第二十章 CSP Session 管理 - 状态管理

状态管理

因为 HTTP 是无状态协议。为 Web 编写的应用程序必须使用特殊技术来管理应用程序上下文或状态。 CSP 提供了许多用于状态管理的机制。这些中的每一个都可能适用于特定情况。

请求之间的跟踪数据

Web 应用程序中状态管理的基本问题是跟踪连续 HTTP 请求之间的信息。有许多可用的技术,包括:

  • 使用隐藏的表单字段或 URL 参数在单个页面上存储数据
  • 将数据存储在客户端的 cookie
  • 将数据存储在服务器上的对象中的 %CSP.Session
  • Caché 数据库中存储数据

在页面中存储数据

要将状态信息存储在页面中,必须放置它以便来自该页面的后续请求包含该信息。

0 0
0 58

第十七章 CSP 中的 HTTP 请求 - %CSP.Response 对象和 OnPreHTTP 方法

%CSP.Response 对象和 OnPreHTTP 方法

可以使用对象中的 %CSP.Response 控制将哪些响应标头发送回 HTTP 客户端。 CSP 服务器自动创建此类的一个实例,并将对它的引用放在变量 %response 中。

由于 %response 对象控制 HTTP 标头,因此通常在类中的 %CSP.PageOnPreHTTP 方法中设置其属性。例如,要重定向传入的 HTTP 请求,请定义以下 OnPreHTTP 方法:

1 0
0 53
文章
· 十月 17, 2022 阅读大约需 3 分钟
第十九章 CSP Session 管理 - %CSP.Session 对象

第十九章 CSP Session 管理 - %CSP.Session 对象

对象中的 %CSP.Session 包含有关当前Session的信息以及以编程方式控制会话各个方面的方法。

User Session DataData Property

可以使用其 Data 属性将 %CSP.Session 中的应用程序特定信息存储在对象中。数据是一种多维数组属性,可让关联多维数组中的特定信息。该数组的内容会在会话的整个生命周期内自动维护。

可以像使用任何其他 ObjectScript 多维数组一样在对象 Data 属性中使用 %CSP.Session

例如,如果在 OnPage 方法中执行以下代码:

0 0
0 52
文章
· 十月 22, 2022 阅读大约需 4 分钟
第二十四章 CSP Session 管理 - 认证架构

第二十四章 CSP Session 管理 - 认证架构

认证架构

安全上下文和粘性登录

应用程序在会话中运行。会话需要运行应用程序的安全上下文。安全上下文包含身份验证状态。

By-SessionsBy-ID Groups 有一个粘性登录,它会记住会话或组中使用的最后一个应用程序的安全上下文。如果组应用程序中的用户以其他用户身份登录,则会更新粘性登录。 (如果用户登录到未经身份验证的应用程序,则粘滞登录不会更新。)

在会话中跳转到应用程序时,会话会尝试使用适合目标应用程序的粘性登录。如果粘性登录与会话的当前安全上下文不匹配,并且应用程序可以接受粘性登录中的身份验证方法,则会话的安全上下文切换到粘性上下文中的安全上下文。

会话结束时,会话的粘性登录会丢失。当包含该组的任何应用程序的所有会话都结束时,该组的粘性登录将丢失。

初始登录后,组有一个关联的粘性登录对象,它在进入组的一个应用程序时尝试使用该对象。当组中的应用程序输入为 UnknownUser 时,粘性登录不会更新,因为这会将组中的所有其他应用程序移动到未经身份验证的安全上下文中。

0 0
0 51