xpages - 在匿名 XPage 应用程序中使用 applicationScope 的安全性如何?

标签 xpages

在 XPages 应用程序中,我想在 applicationScope 中存储一些( secret )信息,以使其可供所有用户访问。但是,应用程序的 ACL 配置为允许匿名用户阅读公共(public)文档。不过,我不希望他们访问 applicationScope。匿名用户是否可以访问/读取 applicationScope?

最佳答案

所有范围变量(包括 applicationScope)都是 memory 上下文。在这种情况下,术语“范围”是指可以访问的范围。

requestScope 可以被当前页面内执行的任何代码访问,持续时间为单个 HTTP 请求,此时对象被销毁。任何其他页面,以及针对同一页面实例的任何后续请求,都有自己单独的 requestScope

viewScope 可以由在当前页面中执行的任何代码在该页面实例的生命周期内访问。其他页面——包括同一用户访问的页面——有自己的viewScope。类似地,如果用户导航到另一个页面,然后导航回上一个页面,这就是一个新的 viewScope,因为它是页面的一个新实例

sessionScope 可以由在单个 HTTP session 期间在任何页面内执行的任何代码访问。这与浏览器中的 session cookie 相关,与身份验证无关。所以如果匿名用户稍后登录,它仍然是相同的 sessionScope。如果他们稍后退出,他们仍然拥有相同的 sessionScope,直到他们关闭浏览器或应用程序清除存储空间。

applicationScope 可以被当前应用程序 内任何页面内执行的任何代码访问。这就是允许它在用户之间共享的原因:如果 User1 正在一台计算机上访问 app1.nsf/page1.xsp 而 User2 正在访问同一页面 - 或不同的页面 - 在 相同的 NSF,它们具有相同的 applicationScope——该变量为两个用户引用完全相同的内存中对象——因此通过由一个用户执行的代码存储的任何数据都可以通过其他用户执行的代码检索,直到应用程序清除存储。

但是,如果 User1 正在访问 app1.nsf 中的任何页面,而 User2(或匿名用户)正在访问 app2.nsf 中的任何页面,变量 applicationScope 引用每个用户的不同内存对象,因为他们正在访问不同的应用程序,即使其中有代码访问另一个应用程序中的磁盘数据的应用程序。 applicationScope 变量所引用的 in-memory 对象在每个 NSF 中是不同的,无论它可以访问的任何磁盘上数据的位置或create 恰好被存储。

所以(以及在同一个 NSF 中编写代码的任何其他人)仍然需要注意如何构建你的逻辑以避免在 applicationScope 中存储敏感信息,然后将其暴露给不应访问它的用户,但您无需担心从访问相同内存范围的其他应用程序执行的代码。如果代码是从相同的 NSF 执行的,代码只能读取您存储在 applicationScope 中的数据。

关于xpages - 在匿名 XPage 应用程序中使用 applicationScope 的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866855/

相关文章:

java - 使用java从domino获取rtf字段以获取JSON

javascript - Xpages:在主题中引用 css 和 js 资源

xpages - 通过自定义控件属性或自定义控件的自定义事件传递函数?

css - Xpages:表格表格和表格布局行的CSS

javascript - 自动调整文本区域/xp :inputTextarea - onload

dialog - Xpages 扩展库对话框位置

java - 如何将 JSON 数据从 URL 读取到 XPage Java Bean

javascript - 如何将 CKEditor 自定义配置文件添加到 XPages?

java - 在 XPage 中运行多个线程

xpages - 有没有办法从 Domino Designer 中生成 JavaDoc?