浏览器打开文件时未验证参数

根据文档, 在 ONLYOFFICE 文档中打开文件进行编辑时,必须将令牌添加到配置中以验证参数。

我打开一个文件的时候也添加了令牌,如果我使用了错误的秘钥生成令牌,就会提示我需要正确的令牌,说明令牌验证是生效的,但是文档中特别说到了JSON 格式的 JWT 令牌的有效负载必须与config具有相同的结构,然而我发现参数不一致的时候也能打开文件.

重现步骤
1.根据配置生成一个token(下面的代码只是一个大概的示例)

const config = {
  document: {
    fileType: "xlsx",
    isForm: true,
    key: "Khirz6zTPdfd7",
    referenceData: {
      fileKey: "BCFA2CED",
      instanceId: "https://example.com",
    },
    title: "Example Title",
    url: "https://example.com/url-to-example-document.xlsx",
  }
};

2.然后将document.title的值改成test
3.然后实例化编辑器new DocsAPI.DocEditor(“editor”, config);

因为这时候token里的payload的title的值与config里的title值已经不一致了,理论上不应该能打开编辑器,而实际是可以的,这是正常的行为吗?

Document Server version:9.0
Type of installation of the Document Server (docker, deb/rpm, exe, please point us to the installation guide that you used as well): docker
OS:Windows 11
Browser version:138.0.3351.77

您好,
是的,这是预期的行为,令牌中的值会优先于配置中的值被考虑,但仍建议确保它们一致,以防止出现意外问题,同时,权限也必须保持一致,这是至关重要的

如果令牌中的值优先于配置中的值也是可以的,但是现在是配置中的值优先于令牌中的值,就拿我上面的例子来讲,最后界面显示的标题是Test,而不是Example Title

在验证过程中只会检查这些参数 - 浏览器 | ONLYOFFICE
这些特定的参数在验证时必须保持一致.
标题是从配置中读取的

现在是在验证的时候不保持一致,反而就能唤起,比如界面上的某个按钮,令牌里的配置值是不开启的,现在反而能被修改,导致界面上的某些功能能被开启,我觉得这是很不合理的,相当于绕过了令牌,那这样令牌还有啥意义呢

令牌的目的是为了防止对文档的无限制访问。请明确指出是哪些具体的配置值存在这种不一致的情况?

比如布局里的保存功能,前端先调用后端的接口生成对应的参数,然后再传递给onlyoffice sdk,但是此时前端可以修改布局里的参数,导致保存按钮可以被显示出来,我觉得这也是相当于绕过令牌的限制了

如果上述链接中提到的 token 内容 (浏览器 | ONLYOFFICE) 与配置内容不匹配,文档将根本无法打开。
布局参数本身与 token 无关。
您提到的这个参数只是控制文档成功打开之后,顶部菜单中是否显示保存图标。文档是否能打开,完全取决于所需的 token 值是否匹配。

那能不能在后续的版本中把所有的参数加入到token中,然后检验所有参数,防止前端绕过后端的控制。

这不是计划中的功能,也不会进行更改。token 的存在是为了防止对文档的无限制访问,它并不是为了验证特定编辑器参数而设计的

那有什么办法防止前端绕过后端控制界面呢?

您好,目前没有这样的办法

那能把这个事情加入到你们的计划里吗

很可惜,但是目前没有这个计划