2010-10-17 42 views
4

远程氯氟烃我有很多的麻烦找有关ColdFusion的氯氟烃保护远程功能AJAX调用的信息。假设您在用户通过AJAX调用登录到网站后为用户检索敏感信息。你叫这样的事情:确保ColdFusion的

https://www.mySite.com/pathToCFC/MyCFC.cfc?method=getBankInfo&userID=2343

所以这显然是超级不安全的,任何可以从浏览器中调用这个和更改用户ID来获得不同用户的银行信息。

我读过有关使用角色上的远程功能属性和使用cflogin对用户进行验证,但即使这样的地方,你会不会有通过像上述呼叫用户ID?经过身份验证的用户是否仍然能够切换用户ID以发现新用户的银行信息?

+0

我想你需要澄清。如果他们是两个应用程序交谈,那么通常他们最终将拥有一个共享的公钥系统,并且您握手。例如,如果您正在讨论公开Web服务以供公众使用,那么他们通常只会发送一个与Web服务数据库中的帐户关联的128位唯一标识(UUID)。 – 2010-10-18 17:54:08

回答

7

不要从客户端传递用户标识。用户标识和其他敏感数据应存储在服务器端。事实上,从客户端传来的每一点数据都必须被认为是可疑的,并经过验证。

因此,如果您使用的是cflogin,并且您位于单个服务器或粘滞会话服务器上,则将用户标识和任何其他关键信息存储在会话范围内。

对每个请求,您从会话获取这个数据,而不是从什么客户端提供。

User Security in Coldfusion

+0

所以如果我通过ajax调用来调用cfc,远程cfc是否可以访问会话范围?如果浏览器的调用没有将参数传递给远程函数,那么这个cfc如何知道它需要使用哪个会话? – DannyLeavitt 2010-10-17 15:52:02

+1

在application.cfc(或application.cfm)中打开会话管理时,CF服务器使用会话cookie(cfid和cftoken)。因此,每次请求时,cfserver都会检查这些cookie,如果它们有效,则允许访问该会话的会话变量。 – 2010-10-17 16:23:53

+0

可以说我在给定的服务器上的一个网站上创建远程CFC功能,并使用相同的CF服务器创建不同的网站。该网站允许会话管理,然后拨打此远程CFC的电话,该CFC驻留在另一个网站的文件夹中。浏览器在客户端调用这个函数。远程CFC是否仍然知道为这个特定的应用程序使用会话范围?在客户端调用会话cookie时会不会自动将这些远程函数传递给这些远程函数? – DannyLeavitt 2010-10-17 21:31:56

0

一个很好的起点等待第二个,如果你有这必须从服务器请求他的细节用户X,你不需要他的ID,你拥有了它的会话,或者如果您使用cflogin功能,您将拥有getUserAuth()。

我你有管理员谁可以看到其他用户的详细信息,你是担心他看到银行的详细信息,你需要的角色,CF的角色或自定义解决方案等

在任何情况下,你不需要送显式调用“给我的银行帐户资料的用户3456” ..