Coldfusion cfc在应用范围内是否安全

Coldfusion cfc在应用范围内是否安全,coldfusion,cfml,Coldfusion,Cfml,我对cfml有点陌生,我试图弄清楚将组件放入应用程序范围是否合适,组件中的所有内容是否都是var'd 我知道范围是由所有用户共享的,但是如果函数中的所有变量都是var'd,那么会阻止人们看到彼此的数据和/或竞争条件吗 谢谢如果存储在组件中的数据属于整个应用程序,例如某些页面布局数据,则可以将其存储在应用程序范围中 此外,如果组件是无状态的,即其中的所有变量都在本地范围内,则可以安全地将从该组件创建的对象存储在该范围内 虽然如果组件是有状态的,即它在其中存储来自以前请求的数据或特定于用户的数据,但

我对cfml有点陌生,我试图弄清楚将组件放入应用程序范围是否合适,组件中的所有内容是否都是var'd

我知道范围是由所有用户共享的,但是如果函数中的所有变量都是var'd,那么会阻止人们看到彼此的数据和/或竞争条件吗


谢谢

如果存储在组件中的数据属于整个应用程序,例如某些页面布局数据,则可以将其存储在应用程序范围中

此外,如果组件是无状态的,即其中的所有变量都在本地范围内,则可以安全地将从该组件创建的对象存储在该范围内

虽然如果组件是有状态的,即它在其中存储来自以前请求的数据或特定于用户的数据,但在应用程序范围中存储由它创建的对象是不安全的,因为这可能会导致数据泄漏以及由于访问错误而导致的其他意外和不必要的结果。
在这种情况下,您应该将组件存储在会话作用域中。

取决于组件的功能。如果组件确实是无状态的,那么将它们存储在共享范围内是安全的。无状态组件/函数a不存储以前请求中的任何信息,b给定特定参数时,总是返回相同的结果。只要无状态cfc中的所有变量都是局部作用域,就不可能存在争用条件。在共享作用域中存储有状态组件是不安全的。这会导致各种意想不到的奇怪结果。你能告诉我们函数是什么吗?你想要达到的目标是什么?我主要是想知道用用户信息存储用户函数是否安全。我想我是想弄清楚什么是安全的,什么是不安全的。将函数存储在应用程序范围内就可以了。用户信息在会话范围内会更好。我认为这仍然取决于你所说的用户信息。如果你不了解比赛中的所有因素,很容易意外地创造比赛条件。顺便说一句,下一次我想你会得到一个更明确的答案,如果你发布一个具体的例子,你会避免问题被关闭。它不一定是花哨的,只是一个小的复制案例,说明了您正在尝试做什么。@brian-一些可能不明显的区别:1 RE:属于整个应用程序,也与数据是只读还是读写相关。应用程序级数据(如在线用户总数)可以存储在应用程序范围内,但仍需要锁定以避免竞争条件。2 RE:其中的所有变量都在局部范围内,即字面上的所有变量。如果您忘记对单个读写变量进行var作用域,那么它最终会进入CFC的变量作用域,这实际上就是这个特定场景中的应用程序作用域。。。。所以答案是这要视情况而定。如前所述,提供有关函数功能的更多详细信息会很有帮助,因此我们可以提供更具体的建议。@Leigh我认为读/写区别是我所追求的,感谢您帮助我了解它。我发现一个很好的方法是想象直接在应用程序范围中创建变量。比如说application.myShoppingCart。在这种情况下,很明显,代码同时存储和写入来自以前请求的数据,因此存储在应用程序范围内是不安全的。